Javascript 在信息窗口中显示谷歌地图标记的纬度和经度

Javascript 在信息窗口中显示谷歌地图标记的纬度和经度,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,如何使用我的(可移动)标记的纬度和经度动态更新我的谷歌地图信息窗口中的URL?我可以在单击的位置显示一个信息窗口,并且我可以成功返回带有event.latLng.lat()和event.latLng.lng()的lat和lng,但是如果我尝试使用它们定义变量,然后在信息窗口中使用这些变量,我会得到未捕获的引用错误:lat未定义错误 var newpostmarker; var newpost = new google.maps.InfoWindow({ content: '<a h

如何使用我的(可移动)标记的纬度和经度动态更新我的谷歌地图信息窗口中的URL?我可以在单击的位置显示一个信息窗口,并且我可以成功返回带有
event.latLng.lat()
event.latLng.lng()
的lat和lng,但是如果我尝试使用它们定义变量,然后在信息窗口中使用这些变量,我会得到
未捕获的引用错误:lat未定义
错误

var newpostmarker;
var newpost = new google.maps.InfoWindow({
    content: '<a href="/posts/add?lat=' + lat + '&lng=' + lng + '">Add New</a>'
});

function placeNewPostMarker(location) {
    if (newpostmarker) {
        newpostmarker.setPosition(location);
    } else {
        newpostmarker = new google.maps.Marker({
            position: location,
            map: map_canvas,
        });
    }
    newpostmarker.setVisible(false);
}

google.maps.event.addListener(map_canvas, 'click', function (event) {
    var lat = event.latLng.lat();
    var lng = event.latLng.lng();
    alert("Lat=" + lat + "; Lng=" + lng);
    placeNewPostMarker(event.latLng);
    newpost.open(map_canvas, newpostmarker);
});
var新邮戳;
var newpost=new google.maps.InfoWindow({
内容:“”
});
功能地点新邮戳(位置){
if(新邮戳){
新邮戳。设置位置(位置);
}否则{
newpostmarker=new google.maps.Marker({
位置:位置,,
地图:地图画布,
});
}
newpostmarker.setVisible(false);
}
google.maps.event.addListener(映射画布,'click',函数(事件){
var lat=event.latLng.lat();
var lng=event.latLng.lng();
警报(“Lat=“+Lat+”;Lng=“+Lng”);
placeNewPostMarker(event.latLng);
打开(地图画布,新邮戳);
});

初始化信息窗口时,变量未知。在
单击
-listener中设置信息窗口的内容属性

//infowindow without properties
var newpost = new google.maps.InfoWindow();

google.maps.event.addListener(map_canvas, 'click', function(event) {
        var lat = event.latLng.lat();
        var lng = event.latLng.lng();
        alert("Lat=" + lat + "; Lng=" + lng);
        placeNewPostMarker(event.latLng);
        newpost.setContent('<a href="/posts/add?lat=' + lat + '&lng=' + lng + '">Add New</a>');
        newpost.open(map_canvas,newpostmarker);
    });
//不带属性的信息窗口
var newpost=newgoogle.maps.InfoWindow();
google.maps.event.addListener(映射画布,'click',函数(事件){
var lat=event.latLng.lat();
var lng=event.latLng.lng();
警报(“Lat=“+Lat+”;Lng=“+Lng”);
placeNewPostMarker(event.latLng);
newpost.setContent(“”);
打开(地图画布,新邮戳);
});

初始化信息窗口时,变量未知。在
单击
-listener中设置信息窗口的内容属性

//infowindow without properties
var newpost = new google.maps.InfoWindow();

google.maps.event.addListener(map_canvas, 'click', function(event) {
        var lat = event.latLng.lat();
        var lng = event.latLng.lng();
        alert("Lat=" + lat + "; Lng=" + lng);
        placeNewPostMarker(event.latLng);
        newpost.setContent('<a href="/posts/add?lat=' + lat + '&lng=' + lng + '">Add New</a>');
        newpost.open(map_canvas,newpostmarker);
    });
//不带属性的信息窗口
var newpost=newgoogle.maps.InfoWindow();
google.maps.event.addListener(映射画布,'click',函数(事件){
var lat=event.latLng.lat();
var lng=event.latLng.lng();
警报(“Lat=“+Lat+”;Lng=“+Lng”);
placeNewPostMarker(event.latLng);
newpost.setContent(“”);
打开(地图画布,新邮戳);
});

必须使变量lat/lng为全局变量。目前,它们是事件侦听器中的本地变量。您必须将变量设置为lat/lng全局变量。目前,它们是本地的事件侦听器。Molle博士在我能够回答之前回答,这是一个包含大部分代码的工作JSFIDLE:Molle博士在我能够回答之前回答,这是一个包含大部分代码的工作JSFIDLE: