假設我的地址爲文本:如何將地址(作爲文本)轉換爲GPS座標?
901 Cherry Ave.聖布魯諾,CA 94066 USA
有任何免費服務,它可以幫我找出這個地址的GPS座標(經度和緯度)? (我將在我的應用程序中使用它,所以它應該是某種API)
文本可以是任何語言。
假設我的地址爲文本:如何將地址(作爲文本)轉換爲GPS座標?
901 Cherry Ave.聖布魯諾,CA 94066 USA
有任何免費服務,它可以幫我找出這個地址的GPS座標(經度和緯度)? (我將在我的應用程序中使用它,所以它應該是某種API)
文本可以是任何語言。
將地址轉換爲地理座標的過程稱爲地理編碼。
根據您使用數據的方式,Google提供了一個API,詳細信息請參見。祝你好運!
謝謝,使用_geocoding_ word我找到了OSM API。 –
檢查這個谷歌地圖API 3服務,這是在谷歌地圖API的反向地理編碼服務
http://code.google.com/apis/maps/documentation/javascript/services.html#Geocoding
http://googlegeodevelopers.blogspot.com/2010/03/introducing-new-google-geocoding-web.html
謝謝。 OSM有相同的功能嗎? –
如果你能夠/願意使用PHP和Zend框架,然後最Google Maps API的抽象是通過使用Zend_Http_Client來抽象的。
例如:
$address = '69 Some Road, Somewhere, NW1 8UJ';
$http = new Zend_Http_Client('google_maps_url');
$http->setParameterGet(array('address' => $address, 'sensor' => 'false'));
$get = $http->request();
$get = json_decode($get->getBody());
if ($get->status == self::GOOGLE_MAPS_SUCCESS) {
$lat = (float) $get->results[0]->geometry->location->lat;
$long = (float) $get->results[0]->geometry->location->lng;
}
它確實不是奧美您使用的框架,因爲如果你想要的東西的大,你可以有一個巨大的驚喜:2.5ķ要求限制/天,在此情況下,你不要將這些信息存儲在xml中供以後使用。 因此,現在您可以找到更好的方式將其與OSM功能進行本地化。
以下是我使用的代碼。我準備了基於voncox代碼(謝謝)。只是不想使用Zend。
如果您需要對多個地址進行地理編碼,請使用任何類型的循環關閉此代碼,但可能有更快的方法。我只用了大約100個地址,處理了大約30秒。
$street="Lwowska 4"; $postcode="00-658"; $city="Warszawa"; $region="mazowieckie";
$a=$street.", ".$postcode.", ".$city.", ".$region;
$address = urlencode($a);
$link = "http://maps.google.com/maps/api/geocode/xml?address=".$address."&sensor=false";
$file = file_get_contents($link);
if(!$file) {
echo "Err: No access to Google service: ".$a."<br/>\n";
}else {
$get = simplexml_load_string($file);
if ($get->status == "OK") {
$lat = (float) $get->result->geometry->location->lat;
$long = (float) $get->result->geometry->location->lng;
echo "lat: ".$lat."; long: ".$long."; ".$a."<br/>\n";
}else{
echo "Err: address not found: ".$a."<br/>\n";
}
}
很好的答案,Marcin。刪除答案中的MySQL部分可能是一個好主意,因爲它與問題無關,並可能導致一些混淆。 –
幹得好。我只*需要地址到GPS的轉換,並浪費了大量的時間在Google的網站上試圖獲得一個API密鑰,將其許可給API,測試它......等等。這種方法不需要密鑰和簡單提供數據。這首先是我真正需要的,而不是嵌入式地圖。 –
僅供參考,MapQuest的社區許可證有一個'open'api,它在背面使用nominatim/OpenStreetMap。
它與Community'Licensed'API是相同的API(接口方式),這使得以後很容易轉換。
我發現打開的版本需要的地址有點過於確切;在部署後的第一天,我們「錯過了」幾個地址。我們認爲該服務已經停止,但事實證明,街道名稱缺少一些細節,如方向(前SW)。
嘗試了許可版本,它甚至返回了拼寫錯誤的地址。
社區許可證許可數據版本也是免費的,但受Google幾乎相同的條款限制。你可以用你想要的「開放」數據。
如果你打算最終付錢,那麼雅虎的Boss/Geo api似乎是低成本的最便宜的;他們只是沒有免費版本。
感謝您使用Google API鏈接(http://code.google.com/apis/maps/documentation/geocoding/)。 OSM有相同的功能嗎? –
以下是OSM地理編碼的鏈接 - http://wiki.openstreetmap.org/wiki/Nominatim –