Javascript 与未捕捉相结合的捕捉到道路(GMaps v3)

Javascript 与未捕捉相结合的捕捉到道路(GMaps v3),javascript,google-maps,Javascript,Google Maps,我的数据库中有一些位置(在本例中为4),我试图在地图上显示这些位置。还有什么比谷歌地图更好的方法吗?然而,有一个陷阱;除了位置之外,我的数据库中还保存了一个“is_Snaps”,它决定了是否使用多段线将位置捕捉到 现在,我已经创建了一个函数,该函数将在数据库中的每个位置循环使用。给出必须放置在地图上的标记(Latlng对象)和捕捉变量,该变量为0或1(1表示捕捉,0表示未捕捉) 好吧,这个函数的基础工作。它不会在不需要捕捉的地方捕捉,也不会在必须捕捉的地方捕捉。然而;如果它被捕捉,它会给我从A到

我的数据库中有一些位置(在本例中为4),我试图在地图上显示这些位置。还有什么比谷歌地图更好的方法吗?然而,有一个陷阱;除了位置之外,我的数据库中还保存了一个“is_Snaps”,它决定了是否使用多段线将位置捕捉到

现在,我已经创建了一个函数,该函数将在数据库中的每个位置循环使用。给出必须放置在地图上的标记(Latlng对象)和捕捉变量,该变量为0或1(1表示捕捉,0表示未捕捉)

好吧,这个函数的基础工作。它不会在不需要捕捉的地方捕捉,也不会在必须捕捉的地方捕捉。然而;如果它被捕捉,它会给我从A到B的两条线。一条线被捕捉到道路上,另一条线没有被捕捉到道路上。因此,不知何故,一个重复的对象被推到我的“路径”数组中。但我似乎找不到我功能上的小故障

有人能检查一下这里出了什么问题吗

提前谢谢

function createLines(marker, snap) {
    if (!service) {
        service = new google.maps.DirectionsService();
    }

    if (snap != 0 && snap != 1) {
        snap = 0;
    }

    if (path.length > 0 && snap != 1) {
        path.push(marker);
    }

    if (path.length == 0) {
        path.push(marker);
        poly = new google.maps.Polyline({ map: map });
        poly.setPath(path);
    } else {
        service.route({
            origin: path[path.length - 1],
            destination: marker,
            travelMode: google.maps.DirectionsTravelMode.WALKING
        }, function(result, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                if(snap == 1) {
                    path = path.concat(result.routes[0].overview_path);
                }
                poly.setPath(path);
            }
        });
        distance = google.maps.geometry.spherical.computeLength(path);
    }
    return Math.round(distance);
}
注意:地图是在这个函数之前创建的,所以它是存在的,它在正确的位置向我显示标记。只有那些会出错的多段线:-)

为了了解正在发生的事情,我包括了3张照片,显示了组合的快照/未快照和分离,这样你可以看到它应该是怎样的,有点

这是一张地图,其中两条捕捉到的线都是未捕捉到的(代码现在已经生成)

这是略去捕捉部分的地图(path=path.concat…)

这是一张地图,上面有捕捉到的部分和未捕捉到的部分(path.push(marker))

出于兴趣,这是调用createLines函数的函数:

function drawMap(locations) {
    if(locations) {
        var markers = [];
        for (var i in locations) {
            loc = locations[i].latlng.split(', ');
            //Create a marker and give it a id(used later on to identify the correct inputfield)
            var markerPos = new google.maps.LatLng(loc[0], loc[1]);
            var mrkr = new google.maps.Marker({
                position: markerPos,
                map: map,
                clickable: true,
                id: locations[i].tripId
            });

            //Create the lines between te markers
            createLines(markerPos, locations[i].is_snapped);
        }
    }
}

猜猜看,你的循环次数是不是太多了?我想不是。如果我是,这些线不会复制每条多段线。。。