javascript - 谷歌地图 API v3 : Remove other markers after route is calculated

标签 javascript html google-maps google-maps-api-3

计算路线后(CalcRoute 函数)如何删除 var 位置标记?因此仅存在起始和结束地址标记。预先感谢:-)

var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    var locations = [
      ['<strong>Scuola dell\'Infanzia e Primaria</strong><br>Via Asmara 32<br><small>Tel.: 0686219772</small>', 41.926979,12.517385, 3],
      ['<strong>Scuola Primaria Statale</strong><br>Via Novara 22<br><small>Tel./Fax: 068557507</small>', 41.914873,12.506486, 2],
      ['<strong>Scuola Secondaria di I Grado</strong><br>Via Sebenico 1<br><small>Tel./Fax: 068549282</small>', 41.918574,12.507201, 1]
    ];

    var infowindow = new google.maps.InfoWindow();
    var myOptions = {
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        styles: [{
            featureType: "poi.business",
            elementType: "labels",
            stylers: [{
                visibility: "off"
            }]
        }]
    }
    map = new google.maps.Map(document.getElementById("map"),
    myOptions);
    var bounds = new google.maps.LatLngBounds();

    for (i = 0; i < locations.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][1], locations[i][2]),
            map: map
        });

        bounds.extend(marker.position);

        google.maps.event.addListener(marker, 'click', (function (marker, i) {
            return function () {
                infowindow.setContent(locations[i][0]);
                infowindow.open(map, marker);
            }
        })(marker, i));
    }

    map.fitBounds(bounds);

    var listener = google.maps.event.addListener(map, "idle", function () {
        map.setZoom(15);
        google.maps.event.removeListener(listener);
    });

    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById('directions-panel'));
}

function calcRoute() {
    var start = document.getElementById('start').value;
    var end = document.getElementById('end').value;
    var request = {
        origin: start,
        destination: end,
        travelMode: google.maps.DirectionsTravelMode.TRANSIT
    };
    directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
        }
    });
}

google.maps.event.addDomListener(window, 'load', initialize);

最佳答案

在创建时将标记保存在数组中,例如(将其添加到创建循环中):

marker = new google.maps.Marker({
...
});
mkArray.push(marker);  // <------

然后:

var i, j=mkArray.length-1;
// Keeping the first and last one
for(i=1;i<j;i++) {
  mk=mkArray[i];
  mk.setMap(null);
}

关于javascript - 谷歌地图 API v3 : Remove other markers after route is calculated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291200/

相关文章:

javascript - 在 JavaScript 中,有没有办法继承 Number 函数?

javascript - 单击时 jQuery 切换 div 类不起作用

javascript - Google map 未按预期工作

Android Get Mapview on Fling 停止动画

javascript - Angularjs ng-repeat with Object key value filter ng-model name 不起作用

javascript - 我如何为此应用淡入淡出效果?

jquery - 向下滑动固定表头

javascript - 带有 KML 图层的 Google Maps API,如何添加搜索框?

javascript - Vue 组件不渲染 & DevTools 挂起

javascript - 将 javascript 变量的值附加到不带脚本的标签