在客户端执行反向地理编码(Google Maps V3 API)

5

如何使用Google Maps V3 API在客户端进行反向地理编码?从地址到LatLng的正向地理编码很简单(以下是代码),但如何执行相同的反向地理编码呢?

正向地理编码代码:

geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
    map: map,
    position: results[0].geometry.location
  });
1个回答

13

这个过程完全相同,只是有一个小差别,即不是向geocode函数提供地址对象,而是提供一个LatLng对象。

逆地理编码代码:

var input = document.getElementById("latlng").value;
var latlngStr = input.split(",",2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);

geocoder.geocode({'latLng': latlng}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    if (results[1]) {
      map.setZoom(11);
      marker = new google.maps.Marker({
          position: latlng, 
          map: map
      }); 
      infowindow.setContent(results[1].formatted_address);
      infowindow.open(map, marker);
    } else {
      alert("No results found");
    }
  } else {
    alert("Geocoder failed due to: " + status);
  }
});

这是一个直接来自Google的示例

希望这能有所帮助。


你知道反向地理编码请求是否会对每天的正常地理编码限制2500个造成影响吗? - Nyxynyxx
我几乎可以肯定它确实如此。只需使用不同的参数调用相同的方法即可。只要确保你从客户端进行地理编码,一切都应该没问题。 - Khepri
抱歉晚了这么久才评论,但我非常确定如果地理编码是在客户端完成的话,那么配额不是每天2500个请求。在这里查看:https://developers.google.com/maps/articles/geocodestrat#client - luke_mclachlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接