[英]Sencha Touch 2 remove Google map Markers
我正在尝试使用ExtJS从Google地图中删除所有标记。 我正在执行setCenter()操作(我需要从地图上删除旧的中心),而且我想在新的中心添加新的标记。
据我所知,要获取谷歌地图实例,我需要在地图容器上执行getMap(),即map.getMap()
我尝试过clearMarkers();、 deleteMarkers(); 和标记= []; 但都行不通。 谷歌地图对象在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
});
任何帮助表示赞赏! 谢谢。
非常简单 要从地图中删除标记,请调用setMap()
方法,并将null
用作参数。
marker.setMap(null);
请注意 ,上述方法不会删除标记。 它只是从地图上删除标记。 相反,如果您希望删除标记,则应将其从地图上删除,然后将标记本身设置为null
。
如果要管理一组标记,则应创建一个数组来保存标记。 使用此数组, 然后可以在需要删除标记时依次对数组中的每个标记调用
setMap()
。 您可以删除标记,方法是将它们从地图中删除,然后将数组的长度设置为0,这将删除所有对标记的引用。
在此处查找示例查看示例(marker-remove.html)
阅读有关Google Maps Tutorial的更多信息-删除标记
最终,我得到了一个解决方案(也许这不是更好的方法,但是有效)
我决定有一个全局变量,该变量引用必须放置在地图上的标记。
要在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);
},
如您所见,这部分代码引用了先前定义的全局变量。 希望这对某人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.