我使用Googles Geocoder API创建了一个函数来执行反向地理位置。它从浏览器的本机功能中提取经/纬度,然后将其发送到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
,但移动设备经常会返回错误的数据(最近的高速公路)。
答案 0 :(得分:0)
在查看了所做的评论(并修改了问题)之后,该函数被重写。通过JSON进行嵌套循环,以汇总来自查询的所有唯一数据。从他们那里,街道地址是手动重新创建的,而不是依靠Google提供所需的结果。
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']);
}
});
}
到目前为止,这是我发现获取所需数据的最佳方法。