谷歌地图api javascript得到纬度和经度?

时间:2014-09-28 15:04:00

标签: javascript google-maps

首先,我使用谷歌地图api将地址转换为纬度和经度。我可以将其转换并显示出来。但是,我无法将纬度和经度设置为隐藏字段,以便我可以使用它来处理...我做错了什么?

我可以收到警报

enter image description here

然而......我无法获得我设置的隐藏字段值,它显示...

enter image description here

以下是我的代码......

<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>

<script type="text/javascript">

    function sayHello() {

        // get input address
        var address = document.getElementById('inputAddress').value;

        var latitude;
        var longitude;

        var geocoder = new google.maps.Geocoder();

        geocoder.geocode({ 'address': address }, function (results, status) {

            if (status == google.maps.GeocoderStatus.OK) {

                latitude = results[0].geometry.location.lat();
                longitude = results[0].geometry.location.lng();

        // find hidden field
        document.getElementById("myLatitudes").value = latitude;
        document.getElementById("myLongitudes").value = longitude;

                alert("ShopLatitudes: " + latitude + ", ShopLongitudes: " + longitude);


            }

            else
            {
                alert("Geocoder failed due to: " + status);
            }

        });


    }


</script>

2 个答案:

答案 0 :(得分:0)

您的表单已提交后,您将异步设置隐藏字段。

您只需在异步响应到达后提交表单。

答案 1 :(得分:0)

对Google API的调用是异步发生的。这意味着脚本在等待来自Web服务的反应时继续。只要从Web服务接收到响应(经度/纬度),就会调用作为geocode.geocode()的第二个参数传递的回调函数。

因为这需要一段时间,您的脚本已经将(仍然未定义的)经度/纬度值分配给隐藏的输入。

要解决此问题,您应该在传递给geocoder.geocode()的回调函数中指定经度和纬度。