Javascript 谷歌地图API v3唯一标记JS
我试图在一个简单的javascript web API上有一个唯一的标记,没有jQuery 我第一次尝试在每次单击地图时删除上一个标记,使用Javascript 谷歌地图API v3唯一标记JS,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我试图在一个简单的javascript web API上有一个唯一的标记,没有jQuery 我第一次尝试在每次单击地图时删除上一个标记,使用 marker.setMap(null); 就在创建一个新的,但它阻止了新的一个,没有出现在屏幕上 我可以通过按钮或其他事件轻松删除标记,但有没有方法可以自动删除标记,并且在地图上只有一个标记可以拖动:true可以移动它,dblClick可以删除它 标记创建由通常的 google.maps.event.addListener(map, "click", f
marker.setMap(null);
就在创建一个新的,但它阻止了新的一个,没有出现在屏幕上
我可以通过按钮或其他事件轻松删除标记,但有没有方法可以自动删除标记,并且在地图上只有一个标记可以拖动:true可以移动它,dblClick可以删除它
标记创建由通常的
google.maps.event.addListener(map, "click", function(event) {...
var marker = new google.maps.Marker({...
该界面用于定义单个位置,因此我不希望屏幕上出现多个标记;坐标随后保存在数据库中。当您使用var关键字添加标记时,稍后将无法访问该变量,调用setMap失败,并由于未定义的变量而停止进一步的脚本执行 使用单个markermarker的示例将存储为地图的属性:
google.maps.event.addListener(map, "click", function(event) {
//closure for the map
var that=this;
//only create a single marker
if(!this.marker){
var input = document.getElementById("location_name");
this.marker = new google.maps.Marker({draggable:true,title:input.value});
google.maps.event.addListener(this.marker,'dblclick',function(){
this.setMap(null);
});
//update title
google.maps.event
.addDomListener(input,
'change',
function(){
that.marker.setTitle(this.value);
}
);
}
//update position
this.marker.setOptions({map : this,
position : event.latLng
});
});
请看一看。当你问一个由你的代码引起的问题时,如果你提供人们可以用来重现问题的代码,你会得到更好的答案。现在它工作得很好!谢谢唯一的问题是我使用了一个函数来更改document.getElementByIdlocation\u name.onchange=function{marker.title=document.getElementByIdlocation\u name.value;},现在当我编辑表单字段id=location\u name时,它不再更新了。。。还有一个范围问题?现在可以通过map.marker访问标记。但是,不清楚映射在实现中是否是全局可访问的,您可以在创建标记时添加更改侦听器,而不存在任何范围问题。请参阅上面修改的代码。谢谢!我们有地图标记,这个标记,那个标记!我真的需要更多地学习js。有趣的是,dblClick、drag值更新和marker.title更改只有在第二次单击地图后才起作用,第一次单击创建标记,但这些功能只有在我第二次单击后才被激活。我记得在javascript中看到google maps已经不相关了。map.marker,this.marker和that.marker都是同一个对象,这取决于您访问`` map对象的范围。将映射存储为全局变量后,只能使用map.marker。与第二次单击相关:dbclick`会立即激活,但dblclick当然需要两次单击。标题的问题如下:当您更改值时,会触发输入的更改事件,并且输入失去焦点。g。当你点击地图,但你也可以点击其他地方。您可以改用输入事件。我的代码中没有观察到标记拖动的内容,因此我不能在没有看到代码的情况下告诉您任何事情。