Javascript 谷歌地图:显示默认标记,然后单击添加标记
我用默认的当前位置标记在我的站点上显示地图,然后我想在单击时添加标记并删除最后一个标记 下面是我的代码Javascript 谷歌地图:显示默认标记,然后单击添加标记,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我用默认的当前位置标记在我的站点上显示地图,然后我想在单击时添加标记并删除最后一个标记 下面是我的代码 var currlat = $('#currentlat').val(); var currlong = $('#currentlong').val(); if(currlat){ currlat = currlat; }else{ currlat = '25.2744'; }
var currlat = $('#currentlat').val();
var currlong = $('#currentlong').val();
if(currlat){
currlat = currlat;
}else{
currlat = '25.2744';
}
if(currlong){
currlong = currlong;
}else{
currlong = '133.7751';
}
var myCenter=new google.maps.LatLng(currlat,currlong);
function initialize()
{
var mapProp = {
center:myCenter,
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("map"),mapProp);
var marker=new google.maps.Marker({
position:myCenter,
});
marker.setMap(map);
google.maps.event.addListener(map, 'click', function(event)
{
placeMarker(event.latLng);
});
}
function placeMarker(location)
{
console.log(location.lat());
if (!marker) {
// Create the marker if it doesn't exist
marker = new google.maps.Marker({
position: location,
map: map
});
}
// Otherwise, simply update its location on the map.
else { marker.setPosition(location); }
$('#currentLatitude').val(location.lat());
$('#currentlongitude').val(location.lng());
}
google.maps.event.addDomListener(window, 'load', initialize);
加上这个
var marker=new google.maps.Marker({
position:myCenter,
});
它只显示当前位置标记和addmarker不工作,或者如果我删除了默认标记的代码,那么addmarker函数可以完美地工作
请帮助,提前感谢使用发布的代码,我得到一个javascript错误:
未捕获引用错误:未定义标记
。标记
变量是初始化函数的局部变量。一个选项是将标记
移动到全局范围
代码片段:
var标记;
var currlat=$('#currentlat').val();
var currlong=$('#currentlong').val();
如果(当前){
currlat=currlat;
}否则{
currlat='25.2744';
}
if(currlong){
currlong=currlong;
}否则{
currlong='133.7751';
}
var myCenter=new google.maps.LatLng(currlat,currlong);
函数初始化(){
var mapProp={
中心:迈森特,
缩放:5,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“map”),mapProp);
marker=新的google.maps.marker({
职位:迈森特,
});
marker.setMap(map);
google.maps.event.addListener(映射,'click',函数(事件){
地点标记(事件标记);
});
}
功能位置标记(位置){
console.log(location.lat());
如果(!标记){
//如果标记不存在,则创建该标记
marker=新的google.maps.marker({
位置:位置,,
地图:地图
});
}
//否则,只需更新其在地图上的位置。
否则{
标记器。设置位置(位置);
}
$('#currentLatitude').val(location.lat());
$('#currentLength').val(location.lng());
}
google.maps.event.addDomListener(窗口“加载”,初始化)代码>
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}
代码的问题是,标记
变量在placeMarker
函数的范围内不可用,因为它与初始化
函数的范围相关联。您只需将标记
变量从初始化
函数中取出,即可解决问题
而且,这个构造非常脏:
if(currlat){
currlat = currlat;
}else{
currlat = '25.2744';
}
if(currlong){
currlong = currlong;
}else{
currlong = '133.7751';
}
它正在工作,但此代码:
if(!currlat) currlat = '25.2744';
if(!currlong)currlong = '133.7751';
更干净,效果也一样
工作代码:
var currlat=$('#currentlat').val();
var currlong=$('#currentlong').val();
如果(!currlat)currlat='25.2744';
如果(!currlong)currlong='133.7751';
var myCenter=new google.maps.LatLng(currlat,currlong);
var-map=null;
var-marker=null;
函数初始化()
{
var mapProp={
中心:迈森特,
缩放:5,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=新的google.maps.map(document.getElementById(“map”),mapProp);
marker=新的google.maps.marker({
职位:迈森特,
});
marker.setMap(map);
google.maps.event.addListener(映射,'click',函数(事件)
{
地点标记(事件标记);
});
}
功能位置标记(位置)
{
console.log(location.lat());
如果(!标记){
//如果标记不存在,则创建该标记
marker=新的google.maps.marker({
位置:位置,,
地图:地图
});
}
//否则,只需更新其在地图上的位置。
else{marker.setPosition(location);}
$('#currentLatitude').val(location.lat());
$('#currentLength').val(location.lng());
}
google.maps.event.addDomListener(窗口“加载”,初始化)代码>
load(“maps”,“3”,{other_参数:“sensor=false”});