gir*_*roy 11 google-maps geocoding geolocation
我想知道是否有可能使用googlemaps api同步地进行地理编码,因此不会等待调用回调函数,而是等待返回值.有没有人找到办法做这样的事情.
PS:我正在使用api的第3版
小智 7
是的,虽然不需要同步请求,但您可以实现的目标是可行的.
看看这段代码
function StoreGeo()
{
var address = $('input[name=zipcode]').val() + ', ' + $('input[name=city]').val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var ll = results[0].geometry.location.toString();
llarr = ll.replace(/[\(\) ]/g, '').split(',');
for(i = 0; i < llarr.length;i++)
{
$('#form').append($('<input type="hidden" name="'+(i == 0 ? 'lat' : 'long')+'">').val(llarr[i]));
}
$('#form').submit();
}
else
{
alert(status);
}
});
$('#form').unbind('submit');
return false;
}
$(document).ready(function () {
//init maps
geocoder = new google.maps.Geocoder();
$('#form').bind('submit',function() {
StoreGeo();
});
});
Run Code Online (Sandbox Code Playgroud)
因此,在提交表单时,将提交处理程序附加到表单,根据表单中的地址信息执行地理位置请求.但同时推迟通过在处理程序中返回false来提交.响应处理程序将使2个隐藏的文本字段"lat"和"long"存储响应.最后,表单由客户端脚本提交,包括两个新字段.在服务器端,您可以将它们存储在数据库中.
!请注意,这是可能的,但可能违反谷歌条款,如上所述.
地理编码器使用该值调用您的回调函数。这是唯一的方法。如果它是同步的,您的脚本将在等待地理编码处理时冻结。确实没有任何理由这样做。
您到底想实现什么目标?
归档时间: |
|
查看次数: |
21285 次 |
最近记录: |