我正在使用反向地理编码API(客户端)将经纬度较长的坐标转换为街道地址。这些经纬度直接从地图上的可拖动标记中获取,因此它们具有许多小数位信息。

例如,如果将其放在旧金山,则拖动标记并将{lat,lng}对发送到API。我得到了一些很普通的东西,例如"San Francisco, CA"或至多是"South of Market, San Francisco, CA, USA"

我知道Google在该地区拥有街道信息,因为我可以完美地使用正向地理编码API。

我可能会缺少任何参数导致此吗?这是我的代码:

maps.reverseGeocode = function(pos, callback) {
    maps.geocoder.geocode({
        latLng: pos,
        bounds: maps.map.getBounds()
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            console.log("Reverse Geocode:", results);
            callback(results[0]);
        } else {
            console.log('Could not geocode: ' + status);
            callback(undefined);
        }
    });
};


pos是直接从地图标记对象获取的。

最佳答案

很快就弄清楚了。这是因为我在请求中包含了bounds参数。删除bounds给我非常准确的结果。我现在仅在正向地理编码中使用bounds

关于javascript - Google Maps反向地理编码仅返回“APPROXIMATE”位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27031051/

10-09 09:17