Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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
Javascript 谷歌地图:显示默认标记,然后单击添加标记_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

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”});