首先,我使用谷歌地图api将地址转换为纬度和经度。我可以将其转换并显示出来。但是,我无法将纬度和经度设置为隐藏字段,以便我可以使用它来处理...我做错了什么?
我可以收到警报
然而......我无法获得我设置的隐藏字段值,它显示...
以下是我的代码......
<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>
答案 0 :(得分:0)
您的表单已提交后,您将异步设置隐藏字段。
您只需在异步响应到达后提交表单。
答案 1 :(得分:0)
对Google API的调用是异步发生的。这意味着脚本在等待来自Web服务的反应时继续。只要从Web服务接收到响应(经度/纬度),就会调用作为geocode.geocode()
的第二个参数传递的回调函数。
因为这需要一段时间,您的脚本已经将(仍然未定义的)经度/纬度值分配给隐藏的输入。
要解决此问题,您应该在传递给geocoder.geocode()
的回调函数中指定经度和纬度。