面对谷歌地图API的问题 - 方向服务清除路线



在地图上,如果已经有用户(A(路径的设置方向,然后如果我设置了新的用户(B(方向路径,那么我想清除旧的用户(A(路由路径。

我遇到了一个问题,当我单击用户(B(时,用户(B(的方向路径集,但用户(A(路径未清除。

我还设置了空白对象,数组directionsDisplay.setDirections({ routes: [] }(;但它对我不起作用。

你能看看我是否错过了什么 - 请指导我

下面是我的代码:

var directionsDisplay;
    var directionsService = new google.maps.DirectionsService();
    var map;
    var route = [];
    function initialize() {
        directionsDisplay = new google.maps.DirectionsRenderer();
        var chicago = new google.maps.LatLng(23.023292, 72.571144);
        var mapOptions = {
            zoom: 11,
            center: chicago
        };
        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
        //console.log(map);
        directionsDisplay.setMap(map);
    }
    $(document).ready(function(){
        google.maps.event.addDomListener(window, 'load', initialize);
    });
    function calcRoute(data) {           
        if(data.length)
        {
            for (var key in data) {
                var track = data[key];
                var start = new google.maps.LatLng(track[0].latitude,track[0].longitude);
                var end = new google.maps.LatLng(track[track.length - 1].latitude,track[track.length - 1].longitude);
                var waypoints = track;
                waypoints.shift();
                waypoints.pop();
                var waypointsgoogle = [];
                for(var waykey in waypoints)
                {
                    waypointsgoogle.push({
                        location: new google.maps.LatLng(waypoints[waykey].latitude,waypoints[waykey].longitude),
                        stopover: false
                    });
                }
                directionsService.route({
                    origin: start,
                    destination: end,
                    optimizeWaypoints:true,
                    travelMode: google.maps.TravelMode.DRIVING,
                    waypoints:waypointsgoogle
                }, function (response, status) {
                if (status == google.maps.DirectionsStatus.OK) {
                    var directionsDisplay = new google.maps.DirectionsRenderer({
                            preserveViewport: true
                        });
                        directionsDisplay.setOptions({
                            polylineOptions: {
                                strokeColor: '#0089d0'                                    
                            }
                        });
                        directionsDisplay.setMap(map);
                        directionsDisplay.setDirections(response);
                } else {
                    alert("Directions Request from " + start.toUrlValue(6) + " to " + end.toUrlValue(6) + " failed: " + status);
                }
                }); 
            }
        }
        else`enter code here`
        {
            directionsDisplay = new google.maps.DirectionsRenderer();
        }
    }

第 44 行:去掉 "var",你说 var 方向显示 = ...

编辑:您可能最好删除整行 44. 方向显示已经是一个方向渲染器

var 在函数内部的作用是每次调用函数时创建一个新对象。 所以旧对象只是停留在地图上(除了你不能轻易访问它,因为var directionsDisplay不再指向旧对象(。

// global variables, outside of every function
var directionsDisplay;
var directionsService;
// Below this point DO NOT use "var directionsDisplay" or "var directionsService" anymore.
// omit the var
function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer();
  ...
}
...

我知道这是问题所在,我不确定它能解决所有问题。 如果没有,请告诉我。

最新更新