Google 地图 API v3 唯一标记 JS
Google Maps API v3 UNIQUE marker JS
我正在尝试在简单的 javascript 网络 API 上使用唯一标记,没有 jQuery。
我首先尝试每次点击地图时删除之前的标记,
marker.setMap(null);
就在创建新的之前,但它阻止了新的,屏幕上没有任何显示。
我可以使用按钮或其他事件轻松删除标记,但有没有办法自动执行此操作,并且地图上只有一个标记(使用 draggable: true 移动它,也许 dblClick 删除它) ?
通常触发标记创建
google.maps.event.addListener(map, "click", function(event) {...
var marker = new google.maps.Marker({...
该界面用于定义单个位置,因此我不希望屏幕上有多个标记;然后将坐标保存在数据库中。
当您使用 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
});
});
我正在尝试在简单的 javascript 网络 API 上使用唯一标记,没有 jQuery。
我首先尝试每次点击地图时删除之前的标记,
marker.setMap(null);
就在创建新的之前,但它阻止了新的,屏幕上没有任何显示。
我可以使用按钮或其他事件轻松删除标记,但有没有办法自动执行此操作,并且地图上只有一个标记(使用 draggable: true 移动它,也许 dblClick 删除它) ?
通常触发标记创建
google.maps.event.addListener(map, "click", function(event) {...
var marker = new google.maps.Marker({...
该界面用于定义单个位置,因此我不希望屏幕上有多个标记;然后将坐标保存在数据库中。
当您使用 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
});
});