1

これが重複した質問のように見えることは理解していますが、私の問題は少し異なり、まだ投稿されたものは何も役に立ちませんでした。

ユーザーの都市を検出する必要があります。現在、サードパーティの API を使用して、ユーザーの IP を都市名にエンコードしています。しかし、それは本当に不正確です (ほとんどすべての場所が首都として示されている私の国ネパールを考えてみてください)。

HTML5 の geo-location API を試してみましたが、ユーザーの地理座標しかわかりません。Google の Geocoding API を使用してみましたが、一貫した形式の結果が得られませんでした (おそらく、国によって住所の書き方が異なるためです)。つまり、結果の JSON オブジェクトでは、米国の住所の場合、5 番目のオブジェクトは都市名を示し、英国の住所の場合は 4 番目のオブジェクトであり、インドの住所の場合は別のオブジェクトになります。

例えば、

見る

http://maps.googleapis.com/maps/api/geocode/json?latlng=51.441944,%20-0.945556&sensor=true

http://maps.googleapis.com/maps/api/geocode/json?latlng=42.155101995,-71.10080&sensor=true .

この不一致により、コードで結果の JSON から都市名を解析することが非常に困難になります。

同じ問題が、座標から都市を取得する方法のコメントで提起されていますか? しかし、解決策はありません。

理想的には、ユーザーの地理座標を都市名に何らかの方法でマッピングし (どのように?)、IP ベースの検出をフォールバックとしてのみ使用したいと考えています。ただし、座標から名前へのマッピング (Google API) で見つけた唯一の解決策は、私の場合は機能しません。

ありがとう!

4

1 に答える 1

1

あなたは無効な仮説を立ててこの問題に取り組んでいると思います。つまり、すべての地理座標は都市に囲まれているということです。あなたができる最善のことは、はるかに大きな行政区域(例えば、州)です。

Google Maps API のジオコーディング レスポンスの解析時:typesキーには、対応する値に適用できる住所コンポーネントの配列が含まれています。これらのタイプは、Geocoding API の「タイプ」セクションで明確に定義されています。さらに、これらのタイプは普遍的であり、国によって異なりません。

適切なフォールバックに置き換える必要がありますがlocality、参照したいタイプのようです。都市に拘束されていない座標の場合、administrative_area_level_2次善の値を参照することができます。

于 2014-02-04T03:55:09.983 に答える