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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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
如何删除固定标记并将其设置为新位置Google Javascript API_Javascript_Google Maps_Google Maps Markers - Fatal编程技术网

如何删除固定标记并将其设置为新位置Google Javascript API

如何删除固定标记并将其设置为新位置Google Javascript API,javascript,google-maps,google-maps-markers,Javascript,Google Maps,Google Maps Markers,如何清除旧的固定标记位置并将其放置在新位置?我正在使用谷歌Javascript API地图进行自动完成搜索。当我搜索一个位置时,标记将固定在地图中的位置上,如果我键入新位置,它将添加另一个标记,但我不希望这样,我希望它将标记添加到新位置并清除旧的固定位置 样本图像 从上图中,我只希望在当前键入的位置上有一个绿色标记,如果位置发生变化,它将仅放置在新位置上,而不会创建多个标记 var自动完成; var countryRestrict={'country':'us'}; 变量标记器https://

如何清除旧的固定标记位置并将其放置在新位置?我正在使用谷歌Javascript API地图进行自动完成搜索。当我搜索一个位置时,标记将固定在地图中的位置上,如果我键入新位置,它将添加另一个标记,但我不希望这样,我希望它将标记添加到新位置并清除旧的固定位置

样本图像

从上图中,我只希望在当前键入的位置上有一个绿色标记,如果位置发生变化,它将仅放置在新位置上,而不会创建多个标记

var自动完成; var countryRestrict={'country':'us'}; 变量标记器https://developers.google.com/maps/documentation/javascript/images/marker_green'; 变量组件形式={ 路线:'long_name', 地点:'long_name', 行政区域级别1:“短名称”, 国家:'long_name' }; var initOptions={ “当前”: 中心:{纬度:2.9248795999997,液化天然气:101.6368828999999}, 缩放:15, 国家:'我的', 组件限制:{'country':'us'} } }; var customLabel={ 餐厅:{ 标签:“R” }, 酒吧:{ 标签:“B” } }; 函数初始化GoogleMap{ var map=new google.maps.Mapdocument.getElementById'map'{ 缩放:初始化选项[“当前”]。缩放, 中心:initOptions['current']。中心, mapTypeControl:false, 泛控制:错误, 动物控制:错误, 街景控制:错误, 可单击图标:false, fullscreenControl:错误 }; var input=document.getElementById'SeachLOcationToBuy'; autocomplete=new google.maps.places.Autocompleteinput; 自动完成。绑定到“边界”,映射; /*map.controls[google.maps.ControlPosition.TOP\u LEFT].pushinput*/ autocomplete.setComponentRestrictions{'country':initOptions['current'].country}; var markerLetter=String.fromCharCode'A'。charCodeAt0+1%26; var markerIcon=MARKER_PATH+markerLetter+'.png'; var infoWindow=new google.maps.infoWindow; 自动完成。addListener'place\u changed',函数{ var place=autocomplete.getPlace; 如果!place.geometry{ 回来 } 如果放置.geometry.viewport{ map.fitbundsplace.geometry.viewport; }否则{ map.setCenterplace.geometry.location; map.setZoom17; } var point=new google.maps.LatLngplace.geometry.location.lat,place.geometry.location.lng; var marker=new google.maps.marker{ 地图:地图, 位置:点,, 图标:markerIcon, 标签:“P” }; 填补空缺; document.getElementById'UpdateFoodAddress'。disabled=false; document.getElementById'full_address'。value=input.value; /*使用位置ID和位置设置标记的位置*/ 标记。设定地点{ 地点id:place.place\u id, 位置:place.geometry.location }; marker.setVisibletrue; }; 下载URL\u api/setGeoXmlLocation.php?geologite=true,functiondata{ var xml=data.responseXML; var markers=xml.documentElement.getElementsByTagName'marker'; var counts=xml.documentElement.getElementsByTagName'counter'[0].childNodes[0]; Array.prototype.forEach.callmarkers,functionmarkerem{ var id=markereem.getAttribute'id'; var name=markereem.getAttribute'name'; var logo=markerem.getAttribute'logo'; var address=markerem.getAttribute'address'; var type=markereem.getAttribute'type'; var page=markerem.getAttribute'page'; var point=new google.maps.LatLng parseFloatMarkeReem.getAttribute'lat', parsefloatmarkerem.getAttribute'lng' ; var infowincontent=document.createElement'div'; var strong=document.createElement'strong'; var img=document.createElement'img'; var imgbox=document.createElement'div'; var br=document.createElement'br'; var span=document.createElement'span'; var text=document.createElement'text'; /*窗口*/ infowincontent.setAttributeclass,应用程序地图信息窗口; text.textContent=地址; infowincontent.appendChildtext; var icon=customLabel[type]| |{}; var marker=new google.maps.marker{ 地图:地图, 位置:点,, 标签:icon.label }; marker.addListener'click',函数{ infoWindow.setContentinfowincontent; infoWindow.openmap,标记; }; }; }; } 功能补足{ 对于componentForm中的var组件{ document.getElementByIdcomponent.value=; document.getElementByIdcomponent.disabled=false; } 对于var i=0;i1创建一个全局可访问数组var markers=[]

2将创建的标记的所有引用推送到该数组中

3如果要删除其中一个标记,只需从数组中删除该标记即可

例如:

var markers = []; //Global Marker array to keep references
 var marker = new google.maps.Marker({
        position: {lat: lat, lng: lng},
        icon: icon,
        map: map
    });
    markers.push(marker);

removeMarker: function () {
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(null);
    }
    markers = [];
},
您现在只需将其传输到您的代码中。下次发布相关代码是个好主意


希望能有所帮助。

您是否尝试过marker.setMapnull->@jasie是的,但它不起作用。如果您在创建新标记之前这样做,它应该会起作用…@Peter此网站不是免费的编码服务。粘贴200行代码,然后说它没有按预期工作,这不是提问的方式。请继续阅读和。可能重复的1此问题已被询问和回答多次,因此可能应该关闭2您提供了几行代码,不受任何上下文限制,因此,您的代码没有任何作用