私は2つの逆ジオコーディングAPI(Google Mapsとfoursquare)に精通しています。どちらにも問題があります。 lat、lng = 35.699,139.707(東京)を考えてみましょう。
Foursquare:
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
エントリにのみ興味があります。残念ながら、私は日本語がわからないので、それが何であるかわかりません。ええと、グーグルはそれが東京の特別な区の1つである新宿だと言います。
Googleマップ:
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"
}
Google Maps APIは英語ですが、結果が低すぎます。たとえば、都市や町は通常、locality
タイプで識別されます。ここでの産地は東京の特別区のひとつである新宿ですが、それは東京の行政システムの実施の詳細です。東京を街にしたいと思っています。もちろん、東京は実際には日本の都道府県の1つであることがわかっているので、locality
の代わりにadministrative_area_level_1
タイプのトークンを検索することもできます。
Foursquare APIにも同じ問題があり、都市は新宿、州は東京として報告されますが、どちらも日本語のみです。
常識的な結果を返す単純な高レベルの逆ジオコーディングAPIはありますか?つまり、「新宿に行く」というのは海外では誰もいません。 「東京に行く」と言われます。
ありがとう。
Yahoo Maps API は、精度を設定する機能を提供するため、役立つ場合があります。
OpenStreeMapには逆引き参照ツールもあります。
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>
GeocodeFarm を試してください。
IPベースごとに1日あたり250の無料クエリがありますが、Webサービスは無制限で無料で、25ドルという安い価格で1日あたり25,000のクエリが提供されます(これは私のアプリで使用しています)。
結果は理解しやすく、完全な文書化、順方向と逆方向などです。
Bing Mapsを試すことができます。正確さはわかりませんが、試すことができます。
http://dev.virtualearth.net/services/v1/geocodeservice/geocodeservice.asmx/ReverseGeocode?latitude=[NUMBER]&longitude=[NUMBER]&key=[MAPS_KEY]&culture=%22en-us%22&format=json