2

私はグーグルマップAPIv3AutocompleteServiceを使用して、ブートストラップの先行入力にデータをフェッチしています。ただし、グーグルの組み込みオートコンプリートを使用した結果の結果と比較すると、結果は少し不正確です。

私のHTMLコード:

<label>Built-in</label><input type="text" id="address1" />
<label>Customize</label><input type="text" id="address2" />

私のスクリプト:

<script>
    //this input use google built-in autocomplete
    var input1 = document.getElementById('address1');
    autocomplete = new google.maps.places.Autocomplete(input1);

    //this input use google AutocompleteService
    $('#address2').typeahead({
        source: process_keyword
    });

    var service = new google.maps.places.AutocompleteService();

    function process_keyword(query, process) {
        var place_results = [];
        var request = {
            input: query,
            types: ['geocode']
        };
        service.getPlacePredictions(request, function (predictions, status) {
            process($.map(predictions, function (prediction) {
                return prediction.description;
            }));
        });
    }
</script>

私はここに完全なコードを投稿しました:http://jsbin.com/ididas/1/edit

たとえば、私が入力したとき

9丁部領

最初のボックスに、5つの結果が表示されます。しかし、同じクエリを2番目のボックスに入力すると、2つの結果しか表示されません。

私の質問は、なぜそれらがこれと異なるのか、そしてカスタムタイプアヘッドが組み込みのオートコンプリートとして完全に機能するように修復するにはどうすればよいかということです

4

1 に答える 1

3

私にとっては、service.getPlacePredictions()5つの結果も返されます。この問題は で発生し$.typeaheadます。これは、 を検索し9 dinh tien hoangてサービスが返す9 Đinh Tiên Hoàngクエリ文字列が結果と一致しないためです (たとえば、 の検索はdと一致しませんĐ。まったく別の文字です)。

フィルタリングはまったく必要ないため$.typeahead()(autocompleteService は既にフィルタリングされた結果を返しているため)、これを $.typeahead-options に追加できます。

matcher:function(){return true;}
于 2013-03-20T07:26:21.607 に答える