繁体   English   中英

Sencha Touch 2删除Google地图标记

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM