2011-01-13 20 views
1

ジオコーディングサービスの結果を特定の地域に限定するようにGoogleマップAPIに問題があります。問題を再現GoogleマップAPIが地域ヒントを使用していません

簡単な例はここにある:http://jsfiddle.net/pqZGr/

JavaScriptコードは本当に簡単です:

$(document).ready(function() { 
    var geocoder = new google.maps.Geocoder(); 
    $("#name").autocomplete({ 
     source: function (request, response) { 
      geocoder.geocode({ 'address': request.term, 'region': 'it' }, function (results, status) { 
       response($.map(results, function (item) { 
        return { 
         value: item.formatted_address 
        } 
       })); 
      }) 
     } 
    }); 
}); 

私もリクエストに'region': 'it'以外http://maps.google.com/maps/api/js?region=it&language=it&sensor=falseとしてAPIのURLを指定しました。あなたはmilMilanoのbegininning)を検索私はCircondario di Miltenberg, GermaniaMilion, Alemdar Mh., 34122 Istanbul/Provincia di Istanbul, Turchiareka Mil', Sacha-Jacuzia, Russiaを取得する場合

問題は、例えばイタリア

に制限(も暗示)されていないGoogleが返されるアドレスです。

イタリアからは何もありません(milと一致する複数の都市がある場合でも)、世界中からの結果が返ってきます(3つだけです)。

私は間違っていますか?

注記:完全なアドレスではなく、都市のみに検索を制限することは可能ですか?

ありがとうございます。

答えて

0

実際にGoogleプレイスオートコンプリートAPI standaloneまたはbuilt inをGoogle Maps APIに使用する必要があるようです。

ジオコーディングサービスは、オートコンプリートクエリ用に設計されておらず、探している結果の種類を返しません。地域パラメータはあなたが言ったようなヒントですが、それは制限ではないので、イタリアに適切な「ミル」がない場合や、他の場所でより良い一致がある場合は、その結果を得るでしょう。

結果を都市に限定する方法はありません。

0

jQuery UIでGoogleジオコーダのオートコンプリートを使用している場合は、46行目のui.geo_autocomplete.jsで1行を編集して地域を追加できます。それは100%正確ではないのですが、見つかったアドレスの数を減らすことができます:

this.options._geocoder.geocode({'address': _address + ' YOUR_REGION_HERE'}, function(_results, _status) 

this.options._geocoder.geocode({'address': _address}, function(_results, _status) 

はと交換します