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

时间:2013-09-24 00:30:18

标签: google-maps google-maps-api-3 geolocation yahoo-api

我一直在浏览文档和整个网络上的一个例子,我找不到这个用例的例子。

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

可以使用Google Maps API完成吗?如果没有,你会建议看什么其他资源?

2 个答案:

答案 0 :(得分:3)

您可以将任何文本作为地理编码器的地址键传递。如果地理编码成功,您应该得到一系列结果。

从那时起,您可以选择第一个结果或迭代数组。它的每个元素都应包含一个地址对象,邮政编码是该对象上的一个可用字段。

请记住,usps zipcodes不是点数也不是形状。它们是点阵列,使用这些点作为顶点绘制的多边形的质心可能没有任何特殊含义。

答案 1 :(得分: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'];

之后,您可以将其与您的谷歌地图脚本混合,如:

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'
  });
}

注意:这对我来说很好,但也许有更好的方法可以做到这一点; - )