Sencha Touch 2删除谷歌地图标记

时间:2014-06-08 04:29:35

标签: javascript google-maps extjs sencha-touch sencha-touch-2

我试图使用ExtJS从谷歌地图中删除所有标记。我正在执行setCenter()操作(我需要从地图中删除旧中心),我还想在新中心添加新标记。

据我所知,要获取谷歌地图实例,我需要在地图容器上执行getMap(),即map.getMap()

我试过clearMarkers();, deleteMarkers();和markers = [];但都不起作用。谷歌地图对象在Chrome开发者工具实用程序中看起来很奇怪,至少在我看来。 Here a snapshot

另外,同样的问题。我这样做:

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
});

任何帮助表示赞赏! 感谢。

2 个答案:

答案 0 :(得分:1)

这很简单。要从地图中删除标记,请调用setMap()方法作为参数传递null

marker.setMap(null);

注意以上方法不会删除标记。它只是从地图中删除标记。如果您希望删除标记,则应将其从地图中删除,然后将标记本身设置为null

  

如果您想管理一组标记,则应创建一个数组来保存标记。使用此数组,您可以在需要删除标记时依次在阵列中的每个标记上调用setMap()。您可以通过从地图中删除标记然后将数组的长度设置为0来删除标记,这将删除对标记的所有引用。

在此处查找示例View example (marker-remove.html)

详细了解Google Maps Tutorial - Remove a marker

答案 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);

  },

如您所见,这部分代码引用了之前定义的全局变量。 希望这有助于某人。