在谷歌地图API v2,如果我想删除所有的地图标记,我可以简单地做:
map.clearOverlays();
我如何做到这一点在谷歌地图API v3?
看看参考API,我不清楚。
在谷歌地图API v2,如果我想删除所有的地图标记,我可以简单地做:
map.clearOverlays();
我如何做到这一点在谷歌地图API v3?
看看参考API,我不清楚。
当前回答
清除所有的覆盖,包括多边形,标记等…
简单的使用方法:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
这是我在地图应用程序中写的一个函数:
function clear_Map() {
directionsDisplay = new google.maps.DirectionsRenderer();
//var chicago = new google.maps.LatLng(41.850033, -87.6500523);
var myOptions = {
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: HamptonRoads
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}
其他回答
我发现使用google-maps-utility-library-v3项目中的markermanager库是最简单的方法。
1. 设置标记管理器
mgr = new MarkerManager(map);
google.maps.event.addListener(mgr, 'loaded', function () {
loadMarkers();
});
2. 向MarkerManager添加标记
function loadMarkers() {
var marker = new google.maps.Marker({
title: title,
position: latlng,
icon: icon
});
mgr.addMarker(marker);
mgr.refresh();
}
3.要清除标记,只需要调用MarkerManger的clearMarkers()函数
mgr.clearMarkers();
清除所有的覆盖,包括多边形,标记等…
简单的使用方法:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
这是我在地图应用程序中写的一个函数:
function clear_Map() {
directionsDisplay = new google.maps.DirectionsRenderer();
//var chicago = new google.maps.LatLng(41.850033, -87.6500523);
var myOptions = {
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: HamptonRoads
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}
google.maps.Map.prototype.markers = new Array();
google.maps.Map.prototype.addMarker = function(marker) {
this.markers[this.markers.length] = marker;
};
google.maps.Map.prototype.getMarkers = function() {
return this.markers
};
google.maps.Map.prototype.clearMarkers = function() {
for(var i=0; i<this.markers.length; i++){
this.markers[i].setMap(null);
}
this.markers = new Array();
};
我认为V3中没有,所以我使用了上面的自定义实现。
免责声明:我没有写这段代码,但我忘记保留引用时,我合并到我的代码库,所以我不知道它来自哪里。
下面来自Anon的效果很好,尽管在反复清除覆盖时有闪烁。
简单地做以下几点:
I.声明一个全局变量:
var markersArray = [];
2定义一个函数:
function clearOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
}
}
3在调用以下函数之前,在'markerArray'中插入标记:
markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});
IV.在任何需要的地方调用clearoverlay()函数。
就是这样! !
希望这对你有所帮助。
我刚刚尝试了kmlLayer.setMap(null),它工作。不确定这是否适用于普通的标记,但似乎工作正确。