使用Google Maps API将邮政编码转换为纬度/经度坐标?

4

我已经查看了文档和整个网络,但无法找到此用例的示例。

给定一个邮政编码,我需要以纬度/经度坐标的形式粗略地估计用户的位置。我只有邮政编码,没有其他信息。

是否可以使用Google Maps API完成此操作?如果不能,您建议查看哪些其他资源?


可能是从邮编获取LatLng - Google Maps API的重复问题。你要找的魔法词是"地理编码"(将地址转换为地理坐标的过程) - geocodezip
2个回答

3
您可以将任何文本作为地址键传递给地理编码器。如果地理编码成功,您应该会得到一个结果数组。
从那时起,您可以选择第一个结果或遍历整个数组。每个元素都应包含一个地址对象,邮政编码是该对象的一个可能字段。
请记住,USPS 邮政编码不是点或形状。它们是点的数组,并且使用这些点作为顶点绘制的多边形的质心可能没有任何特殊含义。

0
也许你可以通过以下 PHP 脚本来实现这个功能:

function getLnt($zip){
  $url = "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($zip)."&sensor=false";

  $result_string = file_get_contents($url);
  $result = json_decode($result_string, true);

  $result1[]=$result['results'][0];
  $result2[]=$result1[0]['geometry'];
  $result3[]=$result2[0]['location'];
  return $result3[0];
}

如果您通过以下方式调用此函数(*我过滤了字符之间的空格,这并非必要):
 $coords = str_replace(' ','',$foo->zipcode);*
 $val = getLnt($coords);

 /* print latitude & longitude for example */
 print $val['lat'];
 print $val['lng'];

然后在此之后,您可以将其与您的Google地图脚本结合使用,就像这样:
function initialize(){
  var myLatlng = new google.maps.LatLng(<?= $val['lat'] ?>,<?= $val['lng'] ?>);
  var mapOptions = {
    zoom: 14,
    center: myLatlng,
    disableDefaultUI: true,
    scrollwheel: false,
  }
  var map = new google.maps.Map(document.getElementById('propMap'), mapOptions);

  var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title: 'title of location',
      icon: iconBase + 'google-marker.png'
  });
}

注意:这对我来说很有效,但也许还有更好的方法来实现它;-)

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