2010-08-02 119 views
14

我在笨PHP + jQuery的工作板的工作,僱主輸入自己的位置,我們使用谷歌地圖API來繪製。雖然這有很棒的可用性結果,但問題是,當我們嘗試向求職者展示這些位置時,他們混淆不清,難以在視覺上辨別出來(他們這樣讀:「02905,2英里遠」,「171 John St.,4英里遠「,」普羅維登斯,RI,10英里遠「將緯度/經度轉換爲城市名稱? (反向進行地理定位)

我想能夠扭轉地理定位從經度/緯度到設定的水平(理想情況下,城市名稱),以便在搜索結果中我可以有這些地點被列爲這樣:「普羅維登斯,RI,10英里遠」,「普羅維登斯,RI,5英里遠」,「克蘭斯頓,RI,16英里遠」。 ?我看到的方式來反向地理到最近的可尋址位置,但沒有辦法控制水平的例子很多。

希望是明確的!隨時評論你需要澄清的任何問題。

回答

12

的谷歌地理編碼器,它支持reverse geocoding回報address_components。如果您只想要城市名稱,您只需要拉出標有localitypolitical的地址組件。如果你想要的狀態,以及它們被用administrative_area_level_1

+11

注意Google Maps API服務條款: http://code.google.com/apis/maps/documentation/geocoding/#Limits 「注意:地理編碼API只能與Google地圖一起使用;禁止在地圖上顯示地理編碼結果,有關允許使用的完整詳情,請參閱Maps API服務條款許可限制。 – sabbour 2010-08-03 07:36:22

+0

啊啊,謝謝! – Walker 2010-08-05 19:58:00

2

你就不能做到這一點做的詳細地址,然後放下街道和數量?

我會說這將會是使用完整的地址更有價值,這樣才能獲得更準確的距離(即使你只顯示城市,州)。

編輯:如果你這樣做的,至少應該在一個標準的形式,你可以很容易的正則表達式,你想出來的數據返回。

+0

很想,但在我們的可用性測試小了很多用人單位都難受發佈的具體地址。 – Walker 2010-08-02 22:11:51

+0

所以僱主輸入一個位置字符串「普羅維登斯郊區」而不是經緯度對。 – tpdi 2010-08-02 22:14:30

+0

我們實際上會將其轉換爲lat/long來存儲並將其繪製在地圖上(對於結果頁/徑向搜索)。僱主在招聘頁面上輸入一個自由格式的字符串 – Walker 2010-08-02 22:19:11

38

免費資源(如知識共享)

國地名

如果您正在尋找免費的(如自由)源,可以使用Geonames API findNearbyPlaceName。

例如下面的返回最近的地名:

http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo

更多信息,請點擊這裏

http://www.geonames.org/export/web-services.html#findNearbyPlaceName

的遊離鹼而不是單點的

它需要有界箱。調用示例:

http://api.freebase.com/api/service/geosearch?location=[30.2,50.4,30.6,50.8]&location_type=/location/citytown&inside=true&indent=1

Geocoder.ca

北美地址反向地理編碼。

信息:http://geocoder.ca/

樣品電話:http://geocoder.ca/?latt=40.70771000786733&longt=-74.0109443664550&reverse=1&allna=1&geoit=xml&corner=1&jsonp=1&callback=test

地圖API探索

使用開放街道地圖nominatim服務:

http://open.mapquestapi.com/nominatim/v1/search?q=50.4,30.4&format=json

非自由來源

雅虎PlaceFinder

文檔http://developer.yahoo.com/geo/placefinder/

樣品電話:

http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid=[yourappidhere]

谷歌地圖API

文件通貨膨脹:

http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding

+1

感謝您的信息。非常翔實的答案。 – ThinkingMonkey 2013-01-12 15:28:50

0

反向地理編碼服務(如谷歌,雅虎和GeoNames的)將工作做好爲此與幾個注意事項:

  • 雖然我不能肯定地說如何商業服務工作,上次我檢查GeoNames使用最近的興趣點策略來確定城市。如果您的查詢點位於兩個城市之間的邊界附近,並且GeoNames數據庫中最近的條目位於該邊界的另一側,則這可能會造成問題。這實際上在我的經驗中發生了一點點,所以這不僅僅是一些技術性問題。
  • 此外,如果您擔心用戶體驗,任何Web API解決方案都會增加延遲並降低可靠性。

我運行了一個網站,該網站提供了許多商業地理網站API,並出售了我們爲支持這些API而構建的Java庫。其中一個(只有美國的覆蓋範圍)使用美國城鎮的適當多邊形地圖來返回包含您的查詢點的結果。這是準確,快速,因此,如果這是在你的系統中的關鍵任務的組成部分,我建議採取看看我們的網站:

http://askgeo.com

特定於從經/緯度查找城市頁面是:

http://askgeo.com/database/UsPlace2010

0

我正在尋找一個API來LAT /轉換長的城市。似乎這是這個主題的原始問題。

我看到數據「http://download.geonames.org/export/dump/」在另一個stackoverflow線程Given the lat/long coordinates, how can we find out the city/country?上共享,並實現了我自己的Web服務。

您可以看到它在http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9上運行只需更改您的位置的經度和緯度。

它被部署在OpenShift(RedHat平臺)上。經過長時間的閒置時間之後的第一次通話可能需要一段時間,但通常表現令人滿意隨意使用這項服務,只要你喜歡...

此外,你可以找到項目來源https://github.com/turgos/Location

0

Html5地理位置需要用戶許可。如果你不想要這種行爲,你可以去外部供應商,如https://geoip-db.com。他們提供基於IP地址的免費地理定位服務。

試試這個例子:

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Geo City Locator</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
</head> 
<body > 
    <div>Country: <span id="country"></span></div> 
    <div>State: <span id="state"></spa></div> 
    <div>City: <span id="city"></span></div> 
    <div>Latitude: <span id="latitude"></span></div> 
    <div>Longitude: <span id="longitude"></span></div> 
    <div>IP: <span id="ip"></span></div>  
    <script> 
     $.getJSON('https://geoip-db.com/json/geoip.php?jsonp=?') 
     .done (function(location) { 
      $('#country').html(location.country_name); 
      $('#state').html(location.state); 
      $('#city').html(location.city); 
      $('#latitude').html(location.latitude); 
      $('#longitude').html(location.longitude); 
      $('#ip').html(location.IPv4);    
     }); 
    </script> 
</body> 
</html> 
相關問題