Служба Google Maps Direction переходит обратно к источнику (создает цикл), как мне это предотвратить? - PullRequest
0 голосов
/ 15 января 2019

Вот моя страница: 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, но когда я делаю любой из них, весь маршрут исчезает.

  • Установка начальных, конечных и путевых точек в переменной directionsService.route( s request, чтобы сделать конец последней остановкой вместо первой.

ПРИМЕЧАНИЕ. Эта страница является динамической, поэтому иногда имеется больше, чем просто начало координат и последняя остановка. Вот пример с дополнительной остановкой: https://yt074.addons.la/m/customer/?s=0DzHdMlt&key=LAWSSoqE1FS1&test

Мои вопросы:

  1. Что я здесь не так делаю?
  2. Как мне удалось отладить эту ошибку API Карт Google самостоятельно? (Конечно, я бы хотел научиться этому!)

1 Ответ

0 голосов
/ 16 января 2019

Удалить путевые точки из объекта запроса услуги направления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...