【问题标题】:Sencha Touch 2 remove Google map MarkersSencha Touch 2 移除谷歌地图标记
【发布时间】:2014-06-08 04:29:35
【问题描述】:

我正在尝试使用 ExtJS 从谷歌地图中删除所有标记。我正在执行 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
});

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

【问题讨论】:

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


    【解决方案1】:

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

    marker.setMap(null);
    

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

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

    在这里找到一个例子View example (marker-remove.html)

    阅读更多关于Google Maps Tutorial - Remove a marker

    【讨论】:

    • 这不回答我的问题,它仅与谷歌地图有关,并且在一方面留下了我在这里提出的问题。这个问题没有提到 Sencha 和 ExtJS。顺便说一句,我无法将标记引用到地图中以执行 setMap(null)。
    • 最后我得到了解决方案@Braj。我采纳了你的建议,非常感谢
    • 谷歌地图基本上与 JavaScript 密切合作。这就是我分享给你的。 ExtJS 也是使用 JavaScript 设计的。
    【解决方案2】:

    最后我得到了一个解决方案(也许这不是更好的方法,但它有效)

    我决定有一个全局变量来引用我必须放在地图上的标记。

    要在 sencha 中定义一个全局变量,我使用这种方法:

    Ext.application({
        name: 'SIGCC',
        marker: null,
        ....
    
        ....
    
    });
    

    我正在使用自定义类来获取 AutocompleteTextField,当用户点击建议的位置时,必须删除前一个标记,并在谷歌地图上放置一个新标记。我还必须在新位置重新定位地图

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

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

    【讨论】:

      猜你喜欢
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多