我创建了一个函数,利用Google的Geocoder API来执行反向地理位置。它从浏览器的本机函数中提取lat/lon,并将它们发送到Google。该函数的目的是获取用户的大致街道地址(即。123 Fake Street
(。不需要城市/直辖市、省/州、国家和邮政编码,只需要街道地址。
function geoSuccess(pos) {
Geocoder = new google.maps.Geocoder;
Geocoder.geocode({location: {lat:pos.coords.latitude,lng:pos.coords.longitude}}, function(r, s) {
if (s === 'OK') {
var found = false,
x = 0;
do {
if (r[x].address_components[0].types.indexOf('route') !== -1) {
found = true;
}
x++;
} while(!found && x < r.length);
alert(r[x-1].address_components[0].long_name);
}
});
}
根据函数的工作方式,它会扫描生成的 JSON 以查找路由。但是,对于准确性与台式机不同的移动设备,存在差异。尽管搜索route
,移动设备经常会返回错误的数据(最近的高速公路(。
在查看了所做的评论(并修改了问题(后,该函数被重写了。通过 JSON 的嵌套循环是为了统计查询中的所有唯一数据。从他们的那里,街道地址是手动重新创建的,而不是依靠谷歌来提供所需的结果。
function geoSuccess(pos) {
var Geocoder = new google.maps.Geocoder;
Geocoder.geocode({location: {lat:pos.coords.latitude,lng:pos.coords.longitude}}, function(r, s) {
if (s === 'OK') {
var addr = [];
r.each(function(o) {
o.address_components.each(function(a) {
addr[a.types.join('.')] = a.long_name
});
});
alert(addr['street_number']+' '+addr['route']);
}
});
}
到目前为止,这是我找到的获取所需数据的最佳方式。