我试图使用ExtJS从谷歌地图中删除所有标记。我正在执行setCenter()操作(我需要从地图中删除旧中心),我还想在新中心添加新标记。
据我所知,要获取谷歌地图实例,我需要在地图容器上执行getMap(),即map.getMap()
我试过clearMarkers();, deleteMarkers();和markers = [];但都不起作用。谷歌地图对象在Chrome开发者工具实用程序中看起来很奇怪,至少在我看来。
另外,同样的问题。我这样做:
new google.maps.Marker({
map : map.getMap(),
position : new google.maps.LatLng(location.lat, location.lng),
title : 'Drag Marker To New Position',
animation : google.maps.Animation.DROP,
draggable : true
});
任何帮助表示赞赏! 感谢。
答案 0 :(得分:1)
这很简单。要从地图中删除标记,请调用setMap()
方法作为参数传递null
。
marker.setMap(null);
注意以上方法不会删除标记。它只是从地图中删除标记。如果您希望删除标记,则应将其从地图中删除,然后将标记本身设置为null
。
如果您想管理一组标记,则应创建一个数组来保存标记。使用此数组,您可以在需要删除标记 em>时依次在阵列中的每个标记上调用
setMap()
。您可以通过从地图中删除标记然后将数组的长度设置为0来删除标记,这将删除对标记的所有引用。
答案 1 :(得分:0)
最后我得到了一个解决方案(也许这不是更好的方法,但它有效)
我决定使用一个全局变量来引用我必须放在地图上的标记。
要在sencha中定义全局变量,请使用以下方法:
Ext.application({
name: 'SIGCC',
marker: null,
....
....
});
我正在使用自定义类来获取AutocompleteTextField,当用户点按建议的位置时,必须删除上一个标记,并在Google地图上放置一个新标记。此外,我必须在新位置重新定位地图
recenterMap: function(location){
//addressMap is the id of the xtype map component
var map = Ext.getCmp('addressMap');
map.setMapCenter({ latitude: location.lat, longitude: location.lng });
if (SIGCC.app.marker){
SIGCC.app.marker.setMap(null);
}
SIGCC.app.marker = new google.maps.Marker({
map : map.getMap(),
position : new google.maps.LatLng(location.lat, location.lng),
title : 'Drag Marker To New Position',
animation : google.maps.Animation.DROP,
draggable : true
});
//My map is hidden before de users tap action, so i have to unhide them
map.setHidden(false);
},
如您所见,这部分代码引用了之前定义的全局变量。 希望这有助于某人。