Google地图 - 预订地理编码 - >错误“无效标签”

时间:2010-05-28 09:35:01

标签: javascript google-maps

我有我的标记的坐标。现在我想得到标记的地址。 所以我在网上搜索并发现谷歌地图保留地理编码。 现在我尝试执行以下操作:

$.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

我搜索了很多,但找不到解决问题的答案。 你能告诉我我的代码有什么问题吗?

是否有其他方法可以获取坐标的地址数据?

2 个答案:

答案 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