我有我的标记的坐标。现在我想得到标记的地址。 所以我在网上搜索并发现谷歌地图保留地理编码。 现在我尝试执行以下操作:
$.getJSON('http://maps.google.com/maps/api/geocode/json?latlng='+point.lat()+','+ point.lng() +'&key='+apiKey+'&sensor=false&output=json&callback=?',
function(data) {
console.log(data);
});
当我尝试显示地址时,意味着获取json,firebug会抛出以下错误:
invalid label
在
"status": "OK",\n
我搜索了很多,但找不到解决问题的答案。 你能告诉我我的代码有什么问题吗?
是否有其他方法可以获取坐标的地址数据?
答案 0 :(得分:4)
您可能会被same origin policy屏蔽。昨天我就这个话题回答了a similar question,你可能想看一下。
当Google地图为JavaScript提供功能齐全的Server-side Geocoding Web Service时,您正尝试使用Client-side Geocoding API。还有v2 version,但最近已弃用。
这会自动解决您的同源问题,此外,会根据客户端IP地址而不是每服务器IP地址计算请求限制,这可能会对流行网站产生巨大影响。
客户端服务应该非常容易使用。这是一个使用v3 API的非常简单的反向地理编码示例:
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();
var point = new google.maps.LatLng(51.50, -0.12);
if (geocoder) {
geocoder.geocode({ 'latLng': point }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
console.log(results[1].formatted_address);
}
else {
console.log('No results found');
}
}
else {
console.log('Geocoder failed due to: ' + status);
}
});
}
</script>
以上示例应将Lambeth, Greater London SE1 7, UK
打印到控制台。
答案 1 :(得分:1)
非常感谢我寻找的答案。我认为这里需要做一些小改动,results[1]
应为results[0]
,否则会显示“邻居”的地址。完整应该是这样的,
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();
var point = new google.maps.LatLng(23.7442812,90.3728129);
if (geocoder) {
geocoder.geocode({ 'latLng': point }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
console.log(results[0].formatted_address);
}
else {
console.log('No results found');
}
}
else {
console.log('Geocoder failed due to: ' + status);
}
});
}
</script>
输出将显示在控制台Road No 8A, Dhaka, Bangladesh