Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Gmap中删除标记_Javascript_Google Maps_Extjs_Google Maps Api 3 - Fatal编程技术网

Javascript 从Gmap中删除标记

Javascript 从Gmap中删除标记,javascript,google-maps,extjs,google-maps-api-3,Javascript,Google Maps,Extjs,Google Maps Api 3,我正在尝试在我的应用程序中集成gmap,使用extjs6.0绘制前端,我想在地图中显示和隐藏一些用户位置 添加带有用户位置的标记非常容易(虽然我得到一些奇怪的无法读取未定义的的属性“getBounds”,但我认为这不是什么大问题) 另一方面,移除一个标记会显示出比我想象的更复杂的一点 我已经阅读了有关Stack的一些问题和Google关于添加/删除标记的文档,我知道“正确”的方法是调用 marker.setMap(null); 但我有一个奇怪的行为:标记不会消失,而是留在地图上 这是我在地图上

我正在尝试在我的应用程序中集成gmap,使用extjs6.0绘制前端,我想在地图中显示和隐藏一些用户位置

添加带有用户位置的
标记
非常容易(虽然我得到一些奇怪的
无法读取未定义的
的属性“getBounds”,但我认为这不是什么大问题)

另一方面,移除一个
标记
会显示出比我想象的更复杂的一点

我已经阅读了有关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]);
            }
        }
    }
removeMarker:函数(记录){
var me=这个;
var markers=me.lookupViewModel().get('techniciansMaker');
对于(var i=0;i
此外,我还在列表中保留标记,以识别我必须删除的标记

我不知道我做错了什么

编辑-已解决

我自己发现我指的是
map容器
,而不是
map
本身。 调用
map.gmap
成功了。

使用时,不应使用
新的google.maps.marker()创建标记。相反,将执行此操作并使
侦听器:{click:…}
在标记上工作。将配置传递给addMarker,它返回一个marker对象:

markerConfig={
纬度,
经度,
标题:说明
}
marker=mapPanel.addMarker(markerConfig)
//隐藏标记
marker.setMap(空)
//再看一遍
marker.setMap(mapPanel.gmap)

这允许您删除标记并消除该
类型错误:无法读取未定义的属性“getBounds”

在删除标记之前是否检查了该条件?请提供一个示例来说明该问题。@jkris是的,该条件已满足