1

我将 Google Places JavaScript API 用于桌面应用程序。但是,API 返回的搜索结果与我在 maps.google.com 中获得的搜索结果不同。例如,如果我搜索“Antique Hostel”,我会得到很多结果(几乎所有结果都是随机的),而在 Google 地图上我会得到正确的(单个)结果。API 和服务中的搜索质量是否不同?这是我的代码

function initialize() {
    // map setup
    var mapOptions = {
        center: new google.maps.LatLng(52.519171, 13.406091199999992),
        zoom: 6,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    },
        $map = document.getElementById('mapCanvas'),
        map = new google.maps.Map($map, mapOptions),
        input = document.getElementById('searchInput'),
        autocomplete = new google.maps.places.Autocomplete(input),
        service = new google.maps.places.PlacesService(map),
        $ajaxSearchInput = $(input),
        markers = [];

    autocomplete.bindTo('bounds', map);
    $ajaxSearchInput.keydown(function(e) {
        if (e.keyCode === 13) {
            var request = {
                query: $(this).val(),
                radius: '500',
                location: map.getCenter()
            }
            service.textSearch(request, searchCallBack);
        }
    });

    searchCallBack = function(results, status) {
        if (status == google.maps.places.PlacesServiceStatus.OK) {
            var bounds = new google.maps.LatLngBounds();
            console.log(results);
            for (var i = 0, marker; marker = markers[i]; i++) {
                marker.setMap(null);
            }
            for (var i = 0; i < results.length; i++) {
                var place = results[i];
                createMarker(results[i], bounds);
            }
            map.fitBounds(bounds);
        }
    }

    createMarker = function(place, bounds) {


        var marker = new google.maps.Marker({
            map: map,
            title: place.name,
            position: place.geometry.location
        });

        // event listener to show the InfoWindow.
        (function(marker, place) {
            google.maps.event.addListener(marker, 'click', function() {
                var content = '<h3>' + place.name + '</h3> ' + place.formatted_address + '<br>',
                    infowindow = new google.maps.InfoWindow({
                        content: ''
                    });

                if (place.rating) {
                    content += '<p> <b>Rating</b>: ' + place.rating + '</p>';
                }
                if (place.types) {
                    content += '<p> <b>Tags</b>: ';
                    for (var j = 0, tag; tag = place.types[j]; j++) {
                        content += tag + ', '
                    }
                    content += '</p>';
                }
                infowindow.content = content;
                infowindow.open(map, marker);
            });
        })(marker, place);

        markers.push(marker);
        bounds.extend(place.geometry.location);
    }
}

google.maps.event.addDomListener(window, 'load', initialize);
4

0 回答 0