php - 如何获取任意地址的经度和纬度?

  显示原文与译文双语对照的内容

你好是什么formulla得到任何地址的经度和纬度,如果我有 street_name,State_name,City_name,Country_namephp和邮政编码? 谢谢

时间: 原作者:

你可以使用bellow代码来获取 lat,使用 php 。 这里有两种获取这里类型的方法

Type-1


 <?php
//Get lat and long by address 
 $address = $dlocation;//Google HQ
 $prepAddr = str_replace(' ','+',$address);
 $geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'&sensor=false');
 $output= json_decode($geocode);
 $latitude = $output->results[0]->geometry->location->lat;
 $longitude = $output->results[0]->geometry->location->lng;

?>

Type-2


 <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
 <script>
 var geocoder;
 var map;
 function initialize() {
 geocoder = new google.maps.Geocoder();
 var latlng = new google.maps.LatLng(50.804400, -1.147250);
 var mapOptions = {
 zoom: 6,
 center: latlng
 }
 map = new google.maps.Map(document.getElementById('map-canvas12'), mapOptions);
 }

 function codeAddress(address,tutorname,url,distance,prise,postcode) {
 var address = address;

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

 var infowindow = new google.maps.InfoWindow({
 content: 'Tutor Name: '+tutorname+'<br>Price Guide: '+prise+'<br>Distance: '+distance+' Miles from you('+postcode+')<br> <a href="'+url+'" target="blank">View Tutor profile</a> '
 });
 infowindow.open(map,marker);

 }/*else {
 alert('Geocode was not successful for the following reason: ' + status);
 }*/
 });
 }


 google.maps.event.addDomListener(window, 'load', initialize);

 window.onload = function(){
 initialize();
//your code here
 <?php foreach($addr as $add) { 

?>
 codeAddress('<?php echo $add['address'];?>','<?php echo $add['tutorname'];?>','<?php echo $add['url'];?>','<?php echo $add['distance'];?>','<?php echo $add['prise'];?>','<?php echo substr( $postcode1,0,4);?>');
 <?php }?>
};
 </script>

 <div id="map-canvas12"></div>

原作者:

你可以使用 谷歌地图 API进行。 有关更多信息,请参阅下面的博客文章。

http://stuff.nekhbet.ro/2008/12/12/how-to-get-coordinates-for-a-given-address-using-php.html

你应该看看 Geocoder php5库:)

你需要访问地理编码服务( 例如 。 从谷歌),没有简单的公式来将地址传送到地理坐标。

没有 forumula,因为街道名称和城市实际上是随机分发的。 地址需要在数据库中查找。 或者,你可以在数据库中查找邮政编码所在区域的邮政编码。

你没有提到国家,所以我假设你只需要美国的地址。 你可以使用的数据库有很多,有些可用,有些没有。

你也可以使用 谷歌地图 API让他们在他们的数据库中查找一个地址。 这可能是最简单的解决方案,但需要你的应用程序在任何时候都有一个工作的互联网连接。

原作者:

对于我们的地址,你可以使用编码器,这个帮助页面有几个不同语言的代码示例,可以让你开始。

原作者:

我提出了以下的问题,考虑到了传入的垃圾和file_get_contents失败。


function get_lonlat( $addr ) {
 try {
 $coordinates = @file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='. urlencode($addr). '&sensor=true');
 $e=json_decode($coordinates);
//call to google api failed so has ZERO_RESULTS -- i.e. rubbish address...
 if ( isset($e->status)) { if ( $e->status == 'ZERO_RESULTS' ) {echo '1:'; $err_res=true; } else {echo '2:'; $err_res=false; } } else { echo '3:'; $err_res=false; }
//$coordinates is false if file_get_contents has failed so create a blank array with Longitude/Latitude.
 if ( $coordinates == false || $err_res == true ) {
 $a = array( 'lat'=>0,'lng'=>0);
 $coordinates = new stdClass();
 foreach ( $a as $key => $value)
 {
 $coordinates->$key = $value;
 }
 } else {
//call to google ok so just return longitude/latitude.
 $coordinates = $e;

 $coordinates = $coordinates->results[0]->geometry->location;
 }

 return $coordinates;
 }
 catch (Exception $e) {
 }

然后得到绳子: 其中 $pc 是邮政编码或者地址。 $address = get_lonlat ( $pc ) ;$l1 = $address-> lat ;$l2 = $address-> lng ;

原作者:
...