按地点ID传递数组值反转GeoCode

时间:2017-06-09 23:19:46

标签: javascript json ajax google-maps google-maps-api-3

我想传入一系列Google地方ID值,并将每个地址的格式化地址输出到Google地图标记(多个标记)。我的问题与此类似:Multiple markers Google Map API v3 from array of addresses and avoid OVER_QUERY_LIMIT while geocoding on pageLoad

但最大的区别是我只有地方ID而不是任何地址。我希望将它转换为一个地址,以便我可以使用其他stackoverflow方法中上面链接中显示的方法。

到目前为止,我尝试使用getJSon方法检索地点ID url:

$。getJSON(' https://maps.googleapis.com/maps/api/place/details/json?placeid=somethingsomething&key=mykey,null,function(data){       var p = data.results [0] .geometry.location;

  var latlng = new google.maps.LatLng(p.lat, p.lng);
  new google.maps.Marker({
      position: latlng,
      map: map,


  });

});

由于CORS问题我无法检索json对象,因此这似乎不起作用。如果我使用JSONP格式将其格式化为ajax调用,则会引发意外的令牌错误(因为字符串本身是JSON)。我只是想找到一个简单的方法来发现id值,把它放到一个函数中,然后吐出格式化的地址。谢谢!

1 个答案:

答案 0 :(得分:1)

为了避免CORS问题,您必须使用Maps JavaScript API的places library。地方图书馆具有place details功能,可以获取有关地点ID的详细信息。您还可以使用Maps JavaScript API的reverse geocoding服务,该服务允许按地点ID获取地址。

您应该注意的重要事项是,您只能在每个请求中传递一个地点ID,并且Maps JavaScript API中的该用户会话具有limits。最初你有一堆10个请求,一旦你使用了桶的所有请求,你就可以每秒执行1个请求。

如果您需要批量反向地理编码,Google建议您在服务器端代码中执行此操作。在这种情况下,您可以使用Geocoding API网络服务,usage limits每秒会有50个请求。

您可以轻松地更改上述问题中的代码,将请求中的address参数更改为相应的地点ID参数。只需阅读我之前提到的文档。

我希望这有帮助!