代码之家  ›  专栏  ›  技术社区  ›  Bing

谷歌地图方向服务正在路由回原点(创建一个循环),我如何防止它?

  •  -1
  • Bing  · 技术社区  · 5 年前

    这是我的页面: https://yt074.addons.la/m/customer/?s=GIaUJXrd&key=LAWSSoqE1FS1&test

    我只想要“去那里”的腿,而不是返回: Map showing both the correct leg and the incorrect return leg.

    以下是相关代码:

    function init_map() {
            points = [{"stop_name":"Vehicle Location","latitude":41.739991000000003,"longitude":-72.675025000000005},{"stop_name":"Capital Building","latitude":"41.766417","longitude":"-72.673645","address_id":"3541"}];
            var myOptions = {
                zoom: 14,
                center: new google.maps.LatLng(41.739991, -72.675025),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById('gmap_canvas'), myOptions);
    
            // Print the bus icon
            marker = new google.maps.Marker({
                map: map,
                icon: image,
                position: new google.maps.LatLng(41.739991, -72.675025)
            });
    
            // Print all stop icons
            for(var i = 0; i < points.length; i++) {
                setMarker(points[i]);
            }
    
        }
    
        function setMarker(point) {
            geocoder = new google.maps.Geocoder();
            infowindow = new google.maps.InfoWindow();
            var directionsDisplay = new google.maps.DirectionsRenderer(
                {
                    suppressMarkers: true,
                    polylineOptions: {
                        strokeColor: '#2F7DC7',
                        strokeWeight: 5
                    }
                });
            var directionsService = new google.maps.DirectionsService();
    
            var lat = point["latitude"];
            var lng = point["longitude"];
    
            var routeReal = new google.maps.LatLng(point['latitude'], point['longitude']);
            path.push(routeReal);
            waypts.push({
                location: routeReal,
                stopover: true
            });
            var ori = path[0];
            var dest = routeReal;
            var request = {
                origin : ori,
                destination : dest,
                waypoints: waypts,
                travelMode : 'DRIVING'
            };
    
    
            directionsService.route(request, function(result, status){
                if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
                {
                    setTimeout(function() {
                        console.log(result, status);
                        directionsDisplay.setDirections(result);
                    }, 3000);
                } else {
                    console.log(result, status);
                    directionsDisplay.setDirections(result);
                }
    
            });
            latlng = new google.maps.LatLng(lat, lng);
            marker = new google.maps.Marker({
                position: latlng,
                map: map,
                draggable: false,
                html: point["stop_name"], // Click content
                icon: {
                    path: fontawesome.markers.CIRCLE,
                    scale: 0.15,
                    strokeWeight: 3,
                    strokeColor: '#000000',
                    fillColor: '#000000'
                }
            });
    
            directionsDisplay.setMap(map);
            marker.setPosition(latlng);
            map.setCenter(latlng);
            google.maps.event.addListener(marker, 'click', function(event) {
                infowindow.setContent(this.html);
                infowindow.setPosition(event.latLng);
                infowindow.open(map, this);
            });
        }
    
        google.maps.event.addDomListener(window, 'load', init_map);
    

    我尝试过的事情:

    • 将断点放在 directionsService.route( 部分,看看我是否可以用一条腿来说明,但不能用另一条腿,但地图似乎可以一次渲染所有部分。

    • 限制初始值 for(var i = 0; i < points.length; i++) { 循环以跳过对的第一个(或最后一个)调用 setMarker ,但当我做这两件事时,整个路线都消失了。

    • 在中设置起点、目的地和航路点 方向服务。路线( 是的 request 变量,使终点成为最后一站,而不是第一站。

    注意:这个页面是动态的,所以有时候不仅仅是原点和最后一站。 下面是一个带有附加站点的示例: https://yt074.addons.la/m/customer/?s=0DzHdMlt&key=LAWSSoqE1FS1&test

    我的问题是:

    1. 我做错了什么?
    2. 我应该如何调试这个谷歌地图API错误呢?(当然,我希望能够从中学习!)
    1 回复  |  直到 5 年前
        1
  •  0
  •   Yousaf Bilal    5 年前

    从方向服务请求对象中删除航路点