我试图在简单的javascript网络API上使用唯一标记,而不是jQuery。
我每次点击地图时都会尝试删除上一个标记
marker.setMap(null);
在创建新的之前,但它阻止了新的,屏幕上没有任何内容。
我可以使用按钮或其他事件轻松删除标记,但是有没有办法自动执行,并且在地图上只有一个标记(可拖动:true可以移动它,也许dblClick可以删除它)?
通常由
触发标记创建google.maps.event.addListener(map, "click", function(event) {...
var marker = new google.maps.Marker({...
界面用于定义单个位置,因此我不想在屏幕上显示多个标记;然后将坐标保存在数据库中。
答案 0 :(得分:0)
当您使用var
- 关键字添加标记时,稍后将无法访问该变量,由于未定义的变量,setMap
的调用失败(并停止进一步的脚本执行)。
使用单个标记的示例(标记将存储为地图的属性):
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
});
});