2016-12-15 119 views
1

我有一个包含地址的字符串php变量。可以说$ adress ='Universitätsring1,1010 Wien'。将字符串转换为Google坐标

有没有办法将这个变量转换成Google地图坐标并将它们保存在其他变量中?

真的不知道如何使用地理编码。

谢谢!

回答

0

是的,你可以,使用地理编码提供的XML,可以把地址作为参数的基础上,你可以得到lat和长:

$adress = 'Universitätsring 1, 1010 Wien'; 
$adress = urlencode($adress); 
$url = 'http://maps.googleapis.com/maps/api/geocode/xml?address=' . $adress . '&sensor=true'; 
    $xml = simplexml_load_file($url); 
    $status = $xml->status; 
    if ($status == 'OK') { 
     $latitude = $xml->result->geometry->location->lat; 
     $longitude = $xml->result->geometry->location->lng; 
    } 

如果你想把它当作一个JSON或阵列可以将XML:

$adress = 'Universitätsring 1, 1010 Wien'; 
$adress = urlencode($adress); 
$url = 'http://maps.googleapis.com/maps/api/geocode/xml?address=' . $adress . '&sensor=true'; 
    $xml = simplexml_load_file($url); 
    $json = json_encode($xml); 
    $array = json_decode($json, true); 
    if ($array['status'] == 'OK') { 
     $latitude = $array['result']['geometry']['location']['lat']; 
     $longitude = $array['result']['geometry']['location']['lng']; 
     echo $latitude; 
     echo $longitude; 
    } 
+0

哇,真好,谢谢。之所以问的是我有我的地图插件长的js代码包含即 VAR的MapOptions = { 中心:新google.maps.LatLng(40.2692714,12.38580539999998), ..现在我可以很容易地更换坐标由$纬度和$经度..但我认为这不是地理编码应该工作的方式,是吗? :D – muzzie

+0

太棒了。乐意效劳。 – Ionut

+0

@ muzzie,如果你想得到一个位置,它就是这样工作的。它没有错。在你的情况下,你在PHP中获取值并将它们发送到JavaScript我想用AJAX。您也可以使用Javascript来获取该位置的坐标,但也许您必须使用PHP,因为您从服务器端收到该地址。 – Ionut

0

是的,你可以通过使用谷歌地图API地址解析

天气预报做到这一点是将地址(如“1600 剧场百汇,山景,CA”)转换为地理坐标 的过程(如北纬37.423021和经度-122.083739),您可以使用 将标记放置在地图上,或放置地图。

例:

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY 

Reference

它将返回JSON或XML这样的:

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "1600", 
       "short_name" : "1600", 
       "types" : [ "street_number" ] 
      }, 
      { 
       "long_name" : "Amphitheatre Pkwy", 
       "short_name" : "Amphitheatre Pkwy", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Mountain View", 
       "short_name" : "Mountain View", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Santa Clara County", 
       "short_name" : "Santa Clara County", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "California", 
       "short_name" : "CA", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "94043", 
       "short_name" : "94043", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA", 
     "geometry" : { 
      "location" : { 
       "lat" : 37.4224764, 
       "lng" : -122.0842499 
      }, 
      "location_type" : "ROOFTOP", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 37.4238253802915, 
        "lng" : -122.0829009197085 
       }, 
       "southwest" : { 
        "lat" : 37.4211274197085, 
        "lng" : -122.0855988802915 
       } 
      } 
     }, 
     "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA", 
     "types" : [ "street_address" ] 
     } 
    ], 
    "status" : "OK" 
} 
+0

是的,我去过那里:)但我有很长的一个代码,我的地图插件至极包含即 VAR的MapOptions = { 中心:新google.maps .LatLng(49.2 692714,14.38580539999998), ..这些坐标怎么能被链接中的thos替换? – muzzie

+0

追加你的地址与上面的网址,如 address = $ your_address,并使用curl命中链接,它将返回json或xml作为回应 –

0

您可以使用谷歌地理编码API。
您需要在谷歌开发者控制台注册应用程序,然后您可以发送请求与您的地址,如
https://maps.googleapis.com/maps/api/geocode/json?address=Universitätsring 1, 1010 Wien&key=YOUR_API_KEY 阅读本指南,它应该有所帮助。
https://developers.google.com/maps/documentation/geocoding/start