2017-12-18 3 views
1

下記のGoogleマップのgecodingレスポンスのJSONレスポンスを検討してください。 5つの要素を持つaddress_componentsの配列で構成されています。 通常、開発者は最初のアイテム(インデックス0のアイテム)を使用して、とlocalityformatted addressなどのアドレス要素を検索します。しかし、これは最良の選択肢ではありません。たとえば、この場合、2番目の項目は他の項目より記述的なアドレスです。同じ応答で異なる地方の同じアドレスがあることがあります。Google Map API:さまざまな "address_components"をgecoding結果で管理するにはどうすればよいですか?

どのようにすればいいですか(Android MapsではGoogle Maps APIを利用できますが、インデックスは0のアイテムではありませんが、選択肢の中から選択しますベストマッチ)?

それに、抽出した情報を一緒に細かい部分をもたらすために、異なるaddress_componentsのすべての要素を反復処理するために思っていたが、問題は、アドレスの矛盾をもたらすlocality状要素の同じタイプ有する異なるaddress_componentsにおける異なる情報のための情報であります情報の要素が異なるaddress_componentアイテムから集められたとき。 例として、以下のサンプルでは、​​2つの異なる都市ラベル(同じ地域内)である異なるlocality要素に2つの値شهر جدید اندیشهKarajがあります。

https://maps.googleapis.com/maps/api/geocode/json?latlng=35.7163931455472,51.01335000246763&key=xxxxx&language=fa

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Unnamed Road", 
       "short_name" : "Unnamed Road", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Karaj", 
       "short_name" : "Karaj", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Shahriar County", 
       "short_name" : "Shahriar County", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "Tehran Province", 
       "short_name" : "Tehran Province", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "ایران", 
       "short_name" : "IR", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Tehran Province, Karaj, Unnamed Road, ایران", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.7221382, 
        "lng" : 51.0148178 
       }, 
       "southwest" : { 
        "lat" : 35.716435, 
        "lng" : 51.0095103 
       } 
      }, 
      "location" : { 
       "lat" : 35.719286, 
       "lng" : 51.012165 
      }, 
      "location_type" : "GEOMETRIC_CENTER", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.7221382, 
        "lng" : 51.0148178 
       }, 
       "southwest" : { 
        "lat" : 35.716435, 
        "lng" : 51.0095103 
       } 
      } 
     }, 
     "place_id" : "ChIJmf7_zEyTjT8RkM8-nK6dTm0", 
     "types" : [ "route" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "فاز ۶ شهر جدید اندیشه", 
       "short_name" : "فاز ۶ شهر جدید اندیشه", 
       "types" : [ "political", "sublocality", "sublocality_level_1" ] 
      }, 
      { 
       "long_name" : "شهر جدید اندیشه", 
       "short_name" : "شهر جدید اندیشه", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "شهرستان شهریار", 
       "short_name" : "شهرستان شهریار", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "استان تهران", 
       "short_name" : "استان تهران", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "ایران", 
       "short_name" : "IR", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "فاز ۶ شهر جدید اندیشه، شهر جدید اندیشه، استان تهران، ایران", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.7389537, 
        "lng" : 51.0349971 
       }, 
       "southwest" : { 
        "lat" : 35.7039031, 
        "lng" : 51.0044146 
       } 
      }, 
      "location" : { 
       "lat" : 35.7210753, 
       "lng" : 51.014934 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.7389537, 
        "lng" : 51.0349971 
       }, 
       "southwest" : { 
        "lat" : 35.7039031, 
        "lng" : 51.0044146 
       } 
      } 
     }, 
     "place_id" : "ChIJiYlwJLHsjT8RruE39U9NMoQ", 
     "types" : [ "political", "sublocality", "sublocality_level_1" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "شهر جدید اندیشه", 
       "short_name" : "شهر جدید اندیشه", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "شهرستان شهریار", 
       "short_name" : "شهرستان شهریار", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "استان تهران", 
       "short_name" : "استان تهران", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "ایران", 
       "short_name" : "IR", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "شهر جدید اندیشه، استان تهران، ایران", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.7388144, 
        "lng" : 51.04460479999999 
       }, 
       "southwest" : { 
        "lat" : 35.6838973, 
        "lng" : 50.9894371 
       } 
      }, 
      "location" : { 
       "lat" : 35.7078282, 
       "lng" : 51.0227587 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.7388144, 
        "lng" : 51.04460479999999 
       }, 
       "southwest" : { 
        "lat" : 35.6838973, 
        "lng" : 50.9894371 
       } 
      } 
     }, 
     "place_id" : "ChIJIQwwRcnsjT8RnTJfLJ3QUAg", 
     "types" : [ "locality", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "شهرستان شهریار", 
       "short_name" : "شهرستان شهریار", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "استان تهران", 
       "short_name" : "استان تهران", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "ایران", 
       "short_name" : "IR", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "شهرستان شهریار، استان تهران، ایران", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 35.7389885, 
        "lng" : 51.23044970000001 
       }, 
       "southwest" : { 
        "lat" : 35.5333437, 
        "lng" : 50.8859253 
       } 
      }, 
      "location" : { 
       "lat" : 35.6096201, 
       "lng" : 51.03319330000001 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 35.7389885, 
        "lng" : 51.23044970000001 
       }, 
       "southwest" : { 
        "lat" : 35.5333437, 
        "lng" : 50.8859253 
       } 
      } 
     }, 
     "place_id" : "ChIJQ6KQjY7xjT8RoYD9gJh8_CY", 
     "types" : [ "administrative_area_level_2", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "استان تهران", 
       "short_name" : "استان تهران", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "ایران", 
       "short_name" : "IR", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "استان تهران، ایران", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 36.07789210000001, 
        "lng" : 53.216228 
       }, 
       "southwest" : { 
        "lat" : 34.909543, 
        "lng" : 50.3186971 
       } 
      }, 
      "location" : { 
       "lat" : 35.7248416, 
       "lng" : 51.381653 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 36.07789210000001, 
        "lng" : 53.216228 
       }, 
       "southwest" : { 
        "lat" : 34.909543, 
        "lng" : 50.3186971 
       } 
      } 
     }, 
     "place_id" : "ChIJf5Us9YQBjj8R0OohvHQms1U", 
     "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
     "address_components" : [ 
      { 
       "long_name" : "ایران", 
       "short_name" : "IR", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "ایران", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 39.782056, 
        "lng" : 63.3333366 
       }, 
       "southwest" : { 
        "lat" : 24.8066999, 
        "lng" : 44.0326949 
       } 
      }, 
      "location" : { 
       "lat" : 32.427908, 
       "lng" : 53.688046 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 39.782056, 
        "lng" : 63.3333366 
       }, 
       "southwest" : { 
        "lat" : 24.8066999, 
        "lng" : 44.0326949 
       } 
      } 
     }, 
     "place_id" : "ChIJ8R1rwS7s9z4RzvpRntOVsEA", 
     "types" : [ "country", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

答えて

1

1に2つの異なる問題があるように見えますので、範囲が少し広いです。私はあなたの疑問に取り組もうとします。

まず、逆ジオコーディング要求を使用して、住所35.7163931455472,51.01335000246763を解決します。 reverse geocodingは、指定された座標を最も近い利用可能なアドレスに解決するように設計されていることに注意してください。また、このサービスは、住所、路線、地域、地方、行政区域、国など、さまざまな種類の結果を提案します。 指定された地点の近くに住所がない場合(地点から約50メートル以内)には、住所番地の結果が返信に表示されないことがあります。あなたの例では、street address型の結果は利用できないため、応答にはルートレベルから始まるさまざまなタイプの結果が含まれています。あなたの回答の最初の3つの項目を表す私のスクリーンショットを見てください。

enter image description here

最初のアイテムタイプのルートが設定されている見ることができるように、2番目の項目は、型小字を有しており、3つ目のタイプの局所性を有しています。

アドレスを選択するための「最良の」基準が何であるかは言うまでもありません。ルートアイテムが最も近いルートアイテムであることがわかりますが、残念ながらこの道路は名前が付けられていません。技術的にはこれが最も近いアイテムなので、サービスはこれが最もマッチしたと考えます。私は結果アイテムのタイプをチェックすることをお勧めします。アイテム0にタイプがある場合はstreet_addressは十分に行かなければなりません。アイテム0にタイプルートがある場合、道路に名前があるかどうかをチェックします。 1の方が詳細です。

とにかく無名の道路は、データの問題であり、あなたがヘルプセンター次のGoogleデータチームに報告することができます

https://support.google.com/maps/answer/3094088

第二に、私が正しく理解していれば、あなたがその項目に0とアイテム1に気づきました私のスクリーンショットのマーカー1とマーカー2の両方がAndisheh New Townに属しているように見えますが、地域アドレスコンポーネントの値が異なります。ルート(場所ID ChIJmf7_zEyTjT8RkM8-nK6dTm0)は、カラヤ地域の一部として報告されます。私は、次のスクリーンショット

enter image description here

https://www.google.com/maps/place/Karaj,+Alborz+Province,+Iran/@35.7700272,50.95899,12.41z/data=!4m5!3m4!1s0x3f8dbf95ef45f011:0x722a04e54eba9bcd!8m2!3d35.8400188!4d50.9390906

のように、Googleマップ上のキャラジの境界を見ることができると、次のスクリーンショットのように、私はAndishehニュータウンの境界線を見ることができます

enter image description here

https://www.google.com/maps/place/Andisheh+New+Town,+Tehran+Province,+Iran/@35.6998795,51.0216598,14.08z/data=!4m5!3m4!1s0x3f8decc945300c21:0x850d09d2c5f329d!8m2!3d35.7078282!4d51.0227587

あなたの応答からのルートはAndisheh New Townポリゴンの中に明確に位置しているので、現時点ではデータの問題に直面しているように見えます。場所ID ChIJmf7_zEyTjT8RkM8-nK6dTm0には、Karajではなく、Andisheh New Townの地域属性が含まれている必要があります。

は、このページを使用して、Googleにフィードバックを送ること自由に感じなさい:

https://www.google.com/maps/place/Tehran+Province,+Karaj,+Unnamed+Road,+Iran/@35.719286,51.0077876,17z/data=!3m1!4b1!4m5!3m4!1s0x3f8d934cccfffe99:0x6d4e9dae9c3ecf90!8m2!3d35.719286!4d51.012165!10m2!1e3!2e3

あなたが逆ジオコーディングでプレイしたい場合、ジオコーダツールを使用してください:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D35.716393%252C51.01335

私は願っています私の答えはあなたの疑問を明確にします!

関連する問題