0

Google Places API にクエリを実行して、起点の場所と半径、およびいくつかのキーワードを渡します。これはうまくいきました!最近、検索結果の品質が大幅に低下していることに気付きました。私の調査によると、検索ボックスに 2 つ以上の単語を入力しても結果が返されないようです。

この問題を示すために、サンプルの HTML ファイルを用意しました。米国インディアナ州インディアナポリス周辺を検索して、検索ボックスにインディアナと入力して検索をクリックします。これにより、いくつかの結果が返されるはずです。その一つがインディアナ州立博物館です。検索を少し絞り込み、Indiana Stateと入力すると、結果リストにインディアナ州立博物館が表示されます。どこに消えた?:( GoogleはそのようにZERO_RESULTSを返します。私は何か間違ったことをしていますか、それともAPIが変更されてほとんど役に立たなくなりましたか?

以下は私のコードです。必要に応じて要点をつかむこともできます。

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&amp;sensor=false"></script>
    </head>
    <body>
        <input type="text" id="search" style="width: 300px;" /><input type="button" id="searchBtn" value="Search"/><br/>
        <div id="map" style="width: 300px; height: 300px;"></div>
        <div id="results" style="width: 600px;height: 600px;background-color:gray;color:white;"></div>
        <script type="text/javascript">
            $(function(){
                var indy = new google.maps.LatLng(39.7685825,-86.1579557);

                var map = new google.maps.Map(document.getElementById('map'), {
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    center: indy,
                    zoom: 10
                });

                var service = new google.maps.places.PlacesService(map);

                $('#searchBtn').click(function() {
                    $('#results').empty();
                    var request = {
                        location: indy,
                        radius: 5000,
                        /*types: ['geocode'],*/
                        name: $('#search').val()
                    };
                    service.nearbySearch(request, function(results, status) {
                        if (status == google.maps.places.PlacesServiceStatus.OK) {
                            printLocationName($.map(results, function (item) {
                                return {
                                    reference: item.reference,
                                    label: item.formatted_address,
                                    value: item.name,
                                    latitude: item.geometry.location.lat(),
                                    longitude: item.geometry.location.lng()
                                };
                            }));
                        }
                        if (status == google.maps.places.PlacesServiceStatus.ZERO_RESULTS) {
                            $('#results').append('<span>No results.</span><img src="http://i474.photobucket.com/albums/rr104/gio_dim/AVerySadPanda.png"/>')
                        }
                    });
                });

                function printLocationName(places) {
                    for (var i = 0; i < places.length; i++) {
                        $('#results').append('<span>' + places[i].value + '</span><br/>');
                    }
                }
            });
        </script>
    </body>
</html>
4

2 に答える 2

0

'name'パラメータは、非常に具体的な検索で使用されます。'name'を'keyword'に変更するだけです。

于 2013-02-15T05:41:02.540 に答える
0

APIのバグのようです。:(

http://code.google.com/p/gmaps-api-issues/issues/detail?id=4845

http://code.google.com/p/gmaps-api-issues/issues/detail?id=4933

于 2013-02-21T14:13:20.410 に答える