2017-05-05 5 views
0

Google Maps JavaScript APIのGeocoderクラスに問題があり、componentRestrictionsを使用すると結果が返されます。Google Maps JS API Geocoderクラスで正しくない結果

つまり、ユーザーが住所を入力してその住所を特定の地域で見つけることを許可しようとしています。

私はジオコードオブジェクトリテラルにアドレスとして文字列を渡します。

次に、localityプロパティをcomponentRestrictionsにして検索を「ニューヨーク」都市に制限します。

は、だから私のコードは次のようになります。

geocoder.geocode(
    {address: address, 
    componentRestrictions: { 
     locality: 'New York' 
    } 
    }, function(results, status) { 
    console.log(results); 
    } 
); 

、など'E 64th St & 5th Ave'を特定のアドレスを渡し、それはセントラルパーク動物園の場所の正しい結果を返します。

しかし、私が住所のためにもっと曖昧なもの、例えば'East Village'を使用すると、ニューヨーク市役所の場所の結果が返されます。

componentRestrictionsプロパティを削除し、同じアドレスを'East Village'として渡すと、East Villageの正しい場所が返されます。

Googleの開発者が教えてくれたcourse through Udacityで提供されているコードを使用しています。そのコードはhere on GitHubです。

コードを提供するのとまったく同じコードを実行すると、自分のコードと同じ問題が発生します。

しかし、コースビデオでは正しく動作します。

このコースを作成してから一部のAPIが変更された可能性がありますので、componentRestrictionsを間違って使用している可能性があります。

誰もこのような問題を経験して解決策を見つけましたか?

コードを間違って使用していますか?

ありがとうございました!

答えて

1

Googleは、2016年11月に新しいバージョンのジオコーダをリリースしました。新しいバージョンでは、アドレスコンポーネントを完全にサポートしていません。

コンポーネントフィルタリングは新しいバージョンでどのように機能するかを説明し、この文書を見てみましょう:新しいジオコーダで

https://developers.google.com/maps/documentation/geocoding/faq#trbl_component_filtering

を、コンポーネントのフィルタリングは唯一の完全アドレス・レベルの結果のためにサポートされています。国コード(例:components = country:GB)とローカリティおよび上位レベルの結果に対する郵便番号の制限が部分的にサポートされています。

+0

ありがとうございます。@ xomena、これは間違いなく問題です。ありがとう! –

関連する問題