2012-07-23 40 views
14

我熟悉兩個反向地理編碼API - 谷歌地圖和foursquare。兩者都有問題。考慮緯度,lng = 35.699,139.707(東京)。尋找一個好的和免費的反向地理編碼API

四方:

GET https://api.foursquare.com/v2/venues/search?ll=35.699,139.707&oauth_token=5TJR4WQZSOW0ZWTE4ENMXKO3Y415252GITEMRPQIVPMEGCYK&v=20120723&limit=1 

得出以下結果:

{ 
"meta": { 
    "code": 200 
}, 
"notifications": [ 
    { 
     "type": "notificationTray", 
     "item": { 
      "unreadCount": 0 
     } 
    } 
], 
"response": { 
    "venues": [ 
     { 
      "id": "4b64ebedf964a520e3d92ae3", 
      "name": "まいどおおきに食堂 東新宿食堂", 
      "contact": { 
       "phone": "0352911870", 
       "formattedPhone": "03-5291-1870" 
      }, 
      "location": { 
       "address": "大久保1-1-45", 
       "crossStreet": "新宿セントラルハイツプラザ 1F", 
       "lat": 35.698492646211, 
       "lng": 139.707271456718, 
       "distance": 61, 
       "postalCode": "169-0072", 
       "city": "新宿區", 
       "state": "東京都", 
       "country": "Japan", 
       "cc": "JP" 
      }, 
      "categories": [ 
       { 
        "id": "4bf58dd8d48988d111941735", 
        "name": "Restaurant japonais", 
        "pluralName": "Restaurants japonais", 
        "shortName": "Japonaise", 
        "icon": { 
         "prefix": "https://foursquare.com/img/categories_v2/food/japanese_", 
         "suffix": ".png" 
        }, 
        "primary": true 
       } 
      ], 
      "verified": false, 
      "stats": { 
       "checkinsCount": 191, 
       "usersCount": 100, 
       "tipCount": 1 
      }, 
      "url": "http://www.shokudo.jp/", 
      "likes": { 
       "count": 0, 
       "groups": [] 
      }, 
      "specials": { 
       "count": 0, 
       "items": [] 
      }, 
      "hereNow": { 
       "count": 0, 
       "groups": [] 
      } 
     } 
    ] 
} 

}

我只在response.venues[0].location.city進入感興趣。不幸的是,我不知道日本人,所以我不知道它是什麼。那麼,谷歌說這是新宿 - 東京的特殊病房之一。

谷歌地圖:

GET http://maps.googleapis.com/maps/api/geocode/json?sensor=false&language=en&latlng=35.699,139.707 

產量:

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "41", 
       "short_name" : "41", 
       "types" : [ "sublocality_level_4", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "1", 
       "short_name" : "1", 
       "types" : [ "sublocality_level_3", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "1丁目", 
       "short_name" : "1丁目", 
       "types" : [ "sublocality_level_2", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Okubo", 
       "short_name" : "Okubo", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Japan, Tokyo, Shinjuku, Okubo, 1丁目1−41", 
     "geometry" : { 
      "location" : { 
       "lat" : 35.69893960, 
       "lng" : 139.7069460 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.70028858029149, 
        "lng" : 139.7082949802915 
       }, 
       "southwest" : { 
        "lat" : 35.69759061970850, 
        "lng" : 139.7055970197085 
       } 
      } 
     }, 
     "types" : [ "sublocality_level_4", "sublocality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "169-8540", 
       "short_name" : "169-8540", 
       "types" : [ "postal_code" ] 
      }, 
      { 
       "long_name" : "2", 
       "short_name" : "2", 
       "types" : [ "sublocality_level_3", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "1丁目", 
       "short_name" : "1丁目", 
       "types" : [ "sublocality_level_2", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Okubo", 
       "short_name" : "Okubo", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "1丁目-2 Okubo, Shinjuku, Tokyo 169-8540, Japan", 
     "geometry" : { 
      "location" : { 
       "lat" : 35.69946460, 
       "lng" : 139.70746810 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.70081358029149, 
        "lng" : 139.7088170802915 
       }, 
       "southwest" : { 
        "lat" : 35.69811561970850, 
        "lng" : 139.7061191197085 
       } 
      } 
     }, 
     "types" : [ "postal_code" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "1", 
       "short_name" : "1", 
       "types" : [ "sublocality_level_3", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "1丁目", 
       "short_name" : "1丁目", 
       "types" : [ "sublocality_level_2", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Okubo", 
       "short_name" : "Okubo", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Japan, Tokyo, Shinjuku, Okubo, 1丁目1", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.69984490, 
        "lng" : 139.70749510 
       }, 
       "southwest" : { 
        "lat" : 35.69787060, 
        "lng" : 139.70506090 
       } 
      }, 
      "location" : { 
       "lat" : 35.69880630, 
       "lng" : 139.70610160 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.70020673029150, 
        "lng" : 139.7076269802915 
       }, 
       "southwest" : { 
        "lat" : 35.69750876970850, 
        "lng" : 139.7049290197085 
       } 
      } 
     }, 
     "types" : [ "sublocality_level_3", "sublocality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "1丁目", 
       "short_name" : "1丁目", 
       "types" : [ "sublocality_level_2", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Okubo", 
       "short_name" : "Okubo", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Japan, Tokyo, Shinjuku, Okubo, 1丁目", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.70128920, 
        "lng" : 139.70796940 
       }, 
       "southwest" : { 
        "lat" : 35.69787060, 
        "lng" : 139.7019760 
       } 
      }, 
      "location" : { 
       "lat" : 35.69868950, 
       "lng" : 139.70306310 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.70128920, 
        "lng" : 139.70796940 
       }, 
       "southwest" : { 
        "lat" : 35.69787060, 
        "lng" : 139.7019760 
       } 
      } 
     }, 
     "types" : [ "sublocality_level_2", "sublocality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Okubo", 
       "short_name" : "Okubo", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Okubo, Shinjuku, Tokyo, Japan", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.70956610, 
        "lng" : 139.7091340 
       }, 
       "southwest" : { 
        "lat" : 35.69787310, 
        "lng" : 139.70060080 
       } 
      }, 
      "location" : { 
       "lat" : 35.70418340, 
       "lng" : 139.70558750 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.70956610, 
        "lng" : 139.7091340 
       }, 
       "southwest" : { 
        "lat" : 35.69787310, 
        "lng" : 139.70060080 
       } 
      } 
     }, 
     "types" : [ "sublocality_level_1", "sublocality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Higashishinjuku Station", 
       "short_name" : "Higashishinjuku Station", 
       "types" : [ "train_station", "transit_station", "establishment" ] 
      }, 
      { 
       "long_name" : "27", 
       "short_name" : "27", 
       "types" : [ "sublocality_level_3", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "7丁目", 
       "short_name" : "7丁目", 
       "types" : [ "sublocality_level_2", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Higashishinjuku Station, 7丁目-27 Shinjuku, Tokyo, Japan", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.7050830, 
        "lng" : 139.7144590 
       }, 
       "southwest" : { 
        "lat" : 35.6926030, 
        "lng" : 139.7000410 
       } 
      }, 
      "location" : { 
       "lat" : 35.697920, 
       "lng" : 139.7075490 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.7050830, 
        "lng" : 139.7144590 
       }, 
       "southwest" : { 
        "lat" : 35.6926030, 
        "lng" : 139.7000410 
       } 
      } 
     }, 
     "types" : [ "train_station", "transit_station", "establishment" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "169-0072", 
       "short_name" : "169-0072", 
       "types" : [ "postal_code" ] 
      }, 
      { 
       "long_name" : "Okubo", 
       "short_name" : "Okubo", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Okubo, Shinjuku, Tokyo 169-0072, Japan", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.70972520, 
        "lng" : 139.71028470 
       }, 
       "southwest" : { 
        "lat" : 35.69710930, 
        "lng" : 139.69624280 
       } 
      }, 
      "location" : { 
       "lat" : 35.70418340, 
       "lng" : 139.70558750 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.70972520, 
        "lng" : 139.71028470 
       }, 
       "southwest" : { 
        "lat" : 35.69710930, 
        "lng" : 139.69624280 
       } 
      } 
     }, 
     "types" : [ "postal_code" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Shinokubo Station", 
       "short_name" : "Shinokubo Station", 
       "types" : [ "train_station", "transit_station", "establishment" ] 
      }, 
      { 
       "long_name" : "10", 
       "short_name" : "10", 
       "types" : [ "sublocality_level_3", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "1丁目", 
       "short_name" : "1丁目", 
       "types" : [ "sublocality_level_2", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Hyakunincho", 
       "short_name" : "Hyakunincho", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Shinokubo Station, 1丁目-10 Hyakunincho, Shinjuku, Tokyo, Japan", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.7078270, 
        "lng" : 139.708840 
       }, 
       "southwest" : { 
        "lat" : 35.6953970, 
        "lng" : 139.6937970 
       } 
      }, 
      "location" : { 
       "lat" : 35.7013060, 
       "lng" : 139.7000440 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.7078270, 
        "lng" : 139.708840 
       }, 
       "southwest" : { 
        "lat" : 35.6953970, 
        "lng" : 139.6937970 
       } 
      } 
     }, 
     "types" : [ "train_station", "transit_station", "establishment" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Shinjuku Station", 
       "short_name" : "Shinjuku Station", 
       "types" : [ "train_station", "transit_station", "establishment" ] 
      }, 
      { 
       "long_name" : "38", 
       "short_name" : "38", 
       "types" : [ "sublocality_level_3", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "3丁目", 
       "short_name" : "3丁目", 
       "types" : [ "sublocality_level_2", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Shinjuku Station, 3丁目-38 Shinjuku, Tokyo, Japan", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.7005790, 
        "lng" : 139.7124960 
       }, 
       "southwest" : { 
        "lat" : 35.6812220, 
        "lng" : 139.6878250 
       } 
      }, 
      "location" : { 
       "lat" : 35.6909210, 
       "lng" : 139.7002580 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.7005790, 
        "lng" : 139.7124960 
       }, 
       "southwest" : { 
        "lat" : 35.6812220, 
        "lng" : 139.6878250 
       } 
      } 
     }, 
     "types" : [ "train_station", "transit_station", "establishment" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "160-0022", 
       "short_name" : "160-0022", 
       "types" : [ "postal_code" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "sublocality_level_1", "sublocality", "political" ] 
      }, 
      { 
       "long_name" : "Shinjuku", 
       "short_name" : "Shinjuku", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Tokyo", 
       "short_name" : "Tokyo", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Japan", 
       "short_name" : "JP", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Shinjuku, Tokyo 160-0022, Japan", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.70311470, 
        "lng" : 139.71922230 
       }, 
       "southwest" : { 
        "lat" : 35.68222330, 
        "lng" : 139.69241360 
       } 
      }, 
      "location" : { 
       "lat" : 35.69110170, 
       "lng" : 139.7067630 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.70311470, 
        "lng" : 139.71922230 
       }, 
       "southwest" : { 
        "lat" : 35.68222330, 
        "lng" : 139.69241360 
       } 
      } 
     }, 
     "types" : [ "postal_code" ] 
     }, 
    /* REMOVED FOR BREVITY */ 
    ], 
    "status" : "OK" 
} 

谷歌地圖API是英文的,但其結果是等級太低。例如,城鎮通常使用locality類型。這裏的地方是東京的特殊病房之一新宿,但它是東京的管理系統的實施細節。我想把東京當作城市。當然,我可以搜索administrative_area_level_1類型的令牌,而不是locality,因爲知道東京實際上是日本的一個縣。

foursquare API有同樣的問題,它報告城市爲新宿和國家東京,只有在日本都!

是否有任何簡單的高級反向地理編碼API返回常識結果?我的意思是,日本以外沒有人說「我要去新宿」。人們說「我要去東京」。

謝謝。

+1

你的「常識」的定義很窄。世界上70%以上的人甚至不會說英語,所以比當地人迴歸什麼地方更「常見」什麼? 無論如何,東京不是一個城市,它是一級行政區(省,州,州,州)。如果因爲不知道日本城市的名稱而想要說「東京」,「琦玉」或「長野」,那麼只需使用谷歌API的lvl1行政區域。但是不要抱怨,重新說「伊利諾伊」而不是「芝加哥」 – Lacrymology 2015-02-12 15:14:36

回答

5

Yahoo Maps API可能能夠幫助你,因爲它提供了設置精度的能力。

+0

+1,用於引用我到雅虎API。我正在檢查它。它看起來和我在這個問題中給出的座標完全一樣。但我有更多的座標來檢查。 – mark 2012-07-23 18:22:41

+0

雖然有一個問題。雅虎比谷歌佔地少得多。 – mark 2012-09-14 01:54:19

2

您可以嘗試Bing地圖,我不知道它是多麼準確,但你可以嘗試

http://dev.virtualearth.net/services/v1/geocodeservice/geocodeservice.asmx/ReverseGeocode?latitude=[NUMBER]&longitude=[NUMBER]&key=[MAPS_KEY]&culture=%22en-us%22&format=json 
23

開放街道地圖具有反向查找工具太:從

http://wiki.openstreetmap.org/wiki/Nominatim#Reverse_Geocoding_.2F_Address_lookup

例鏈接:

查詢:

http://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1 

結果:

<reversegeocode timestamp="Fri, 06 Nov 09 16:33:54 +0000" querystring="..."> 
    <result place_id="1620612" osm_type="node" osm_id="452010817"> 
    135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom 
    </result> 
    <addressparts> 
    <house>135</house> 
    <road>Pilkington Avenue</road> 
    <village>Wylde Green</village> 
    <town>Sutton Coldfield</town> 
    <city>City of Birmingham</city> 
    <county>West Midlands (county)</county> 
    <postcode>B72</postcode> 
    <country>United Kingdom</country> 
    <country_code>gb</country_code> 
    </addressparts> 
</reversegeocode> 
+0

但請注意,此服務僅適用於非常少量的請求(「絕對最多每秒1個請求」)。 – 2018-02-26 14:49:27

5

嘗試GeocodeFarm

每天每個IP 250免費查詢,但Web服務是免費的無限和便宜的25美元每天給你25,000查詢(這是我用於我的應用程序)。

結果很容易理解,完整的文檔,前進和後退等

+1

25000查詢每天實際上是100英鎊/月... – KPM 2017-09-25 08:52:10

+0

現在沒有免費版本。意識到這一點 – 2017-12-17 18:25:43