Javascript 每次在地图上更改标记位置时更改隐藏字段值

Javascript 每次在地图上更改标记位置时更改隐藏字段值,javascript,google-maps-api-3,google-maps-markers,Javascript,Google Maps Api 3,Google Maps Markers,我正在制作一个GoogleMaps应用程序,我允许用户通过单击地图只在地图上放置一个标记。每次用户再次单击地图时,旧标记将被删除,并将标记放置在新的单击位置。我有一个隐藏的输入字段,我希望每次标记改变位置时它的值都会改变。该值应为新标记位置的坐标。我为此编写的代码如下: var map; var marker; var coords; function initialize() { var latlng = new google.maps.LatLng(19.074448,72.872

我正在制作一个GoogleMaps应用程序,我允许用户通过单击地图只在地图上放置一个标记。每次用户再次单击地图时,旧标记将被删除,并将标记放置在新的单击位置。我有一个隐藏的输入字段,我希望每次标记改变位置时它的值都会改变。该值应为新标记位置的坐标。我为此编写的代码如下:

var map;
var marker;
var coords;

function initialize() {
    var latlng = new google.maps.LatLng(19.074448,72.872314);
    var myOptions = {
    zoom: 12,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
        });
};

function placeMarker(location) {
    if (marker) {
        marker.setMap(null);
        marker = null;
        placeMarker(location);
    }
    else {
        marker = new google.maps.Marker({
            position: location,
            map: map
            });
        document.getElementById("id_lat").value = marker.getPosition().toUrlValue()
    }
};
具体来说,我使用这一行来更改值

document.getElementById("id_lat").value = marker.getPosition().toUrlValue()
其中,相关隐藏字段的id为id_lat
但这似乎不起作用。我做错了什么?我如何修复它?我不熟悉javascript。

我想你忘了在初始化函数中添加一个标记。除此之外,您的代码似乎工作正常

var map;
var marker;
var coords;

function initialize() {
    var latlng = new google.maps.LatLng(19.074448,72.872314);
    var myOptions = {
        zoom: 12,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
    });
    // add a marker on map
    placeMarker(latlng);
};

function placeMarker(location) {
    if (marker) {
        marker.setMap(null);
        marker = null;
        placeMarker(location);
    } else {
        marker = new google.maps.Marker({
            position: location,
            map: map
        });
        document.getElementById("id_lat").value = marker.getPosition().toUrlValue();
            // worked for me for <input type="text" value="Submit" id="id_lat" style="display:none"/> element
        alert(document.getElementById("id_lat").value);
    }
};

您可以尝试查找错误消息。因此,这有助于快速解决问题。请使用try{docu…=marker.getPosi…}捕获e{alert e.message;}并在此处发布警报消息。@Black先生-我试过了。它没有显示任何警告框或任何错误。好的,所以我检查了。页面的来源没有改变。但是当表单提交时,我在提交的表单数据中获得了正确的坐标。我也同意。所以我想,问题解决了是的,现在对我也有用。不需要添加一个标记。但我认为它会动态地改变源代码。没有。然而,当表格提交时,我得到了正确的坐标,我对此表示同意。不过,感谢您的帮助: