从Gmap中移除标记

时间:2016-01-14 17:12:29

标签: javascript google-maps extjs google-maps-api-3

我试图在我的应用程序中集成G​​maps,使用ExtJs 6.0绘制前端,我想在地图中显示和隐藏一些用户位置。

添加具有用户位置的marker非常容易(虽然我得到了一些奇怪的Cannot read property 'getBounds' of undefined,但我认为这不是什么大问题。)

另一方面,移除marker它显示出比我想象的更复杂的一点。

我已经在Stack和Google的文档中阅读了有关添加/删除标记的一些问题,而且我理解"对"这样做的方法是打电话

marker.setMap(null);

但我有一个奇怪的行为:标记不会消失并保留在地图上。

是我在地图上添加标记的方式:

addMarker : function(record) {
        var me = this;
        var map = me.lookupController().lookupReference('map');
        var latitude = record.get('latitude');
        var longitude = record.get('longitude');
        var description = record.get('fullName');

        var marker = new google.maps.Marker({
            lat: latitude, 
            lng: longitude,
            title : description
        });

        me.lookupViewModel().get('techniciansMaker').push(marker);
        map.addMarker(marker);
    }

这个是我尝试从地图中删除标记的方式:

removeMarker : function(record){
        var me = this;
        var markers = me.lookupViewModel().get('techniciansMaker');

        for(var i = 0; i < markers.length; i++){
            var m = markers[i];
            if (markers[i].getTitle() == record.get('fullName')){
                markers[i].setMap(null);
                Ext.Array.remove(markers, markers[i]);
            }
        }
    }

此外,我将标记保留在列表中以识别我必须删除的标记。

我无法弄清楚我做错了什么......

编辑 - 已解决

我自己想通了我指的是map container而不是map本身。 调用map.gmap就可以了。

1 个答案:

答案 0 :(得分:0)

使用Ext.ux.GMapPanel时,请勿自己使用script: - # something to do before pushing the tag # sometimes the remote might already exist (if using the same runner), let's just remove it and don't fail - git remote remove https-origin || true # add new https-origin remote which uses the API_KEY - git remote add https-origin https://gitlab-ci-token:${API_KEY}@gitlab.com/my-group/my-app.git # tag your build - git tag build-bitrise # push only the build-bitrise tag using the https-origin ref, and skip CI build - git push https-origin -o ci.skip refs/tags/build-bitrise 创建标记。相反,addMarker将执行此操作,并使new google.maps.Marker()在标记上起作用。您将配置传递给addMarker,该方法返回一个标记对象:

listeners:{click:...}

这使您可以删除标记并摆脱该markerConfig = { lat: latitude, lng: longitude, title : description } marker = mapPanel.addMarker(markerConfig) // hide the marker marker.setMap(null) // show it again marker.setMap(mapPanel.gmap)