我正在尝试使用Geolocation API
和Google Maps Geocoder
获取格式化的用户地址。一切都很好,但并不是每个地方都有。例如,纬度为42.6462539 21.178498299999998
的42.6462539 21.178498299999998
返回ZERO_RESULTS
.如果你查看地图,这些坐标周围的区域有足够的数据,所以是否有可能得到一个大致的地址,比如在给定半径内的最近的道路或地方,例如250米。
以下是我的当前代码:
if (!navigator.geolocation) alert('Geolocation is not supported by this browser.');
navigator.geolocation.getCurrentPosition(function(position) {
var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
geocoder.geocode({latLng: latlng}, function(results, status) {
if (status === 'OK') {
console.log('Geocoding successful.', results);
} else {
console.log('Geocoding failed...', status);
}
});
});
谢谢!
发布于 2017-05-04 23:31:33
地理编码似乎不工作在您的地区,即使与其他附近的坐标。您可以检查状态并使用另一种方法查找最近的位置。
if (status == google.maps.GeocoderStatus.OK) {
// Success
} else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
// Try something else
}
例如,一个解决方案是道路API。用你的例子坐标,它是有效的。
https://roads.googleapis.com/v1/nearestRoads?points=42.6462539,21.178498299999998&key=your_api_key
您必须在控制台中启用API,并提供自己的密钥。
上面的查询返回:
{
"snappedPoints": [
{
"location": {
"latitude": 42.646445887532415,
"longitude": 21.178424485523163
},
"originalIndex": 0,
"placeId": "ChIJwzaWjcieVBMR-DmaAxrqIs8"
},
{
"location": {
"latitude": 42.646445887532415,
"longitude": 21.178424485523163
},
"originalIndex": 0,
"placeId": "ChIJwzaWjcieVBMR-TmaAxrqIs8"
}
]
}
然后使用返回的placeId
geocoder.geocode({
'placeId': 'ChIJwzaWjcieVBMR-DmaAxrqIs8'
}, function (results, status) {
// Returns "Muharrem Fejza, Prishtinë"
});
您也可以尝试使用附近搜索,这取决于您的目标是什么。附近的搜索接受一个radius参数。
https://stackoverflow.com/questions/43792675
复制相似问题