Google Maps RadarSearch mengembalikan kurang dari 200

Pernyataan masalah

radarSearch hanya mengembalikan lokasi yang dekat dengan pusat peta pada pemuatan awal dan hanya sekitar 140 (bukan 200) yang dikembalikan. Saya menyetel anggota batas objek permintaan ke map.getBounds... setelah pemuatan awalSaat saya memindahkan tengah peta, lebih banyak lokasi ditambahkan...

setelah memindahkan peta sedikitPertanyaan

Mengapa saya mendapatkan kurang dari 200 lokasi yang diiklankan dan bagaimana cara mendapatkan hasil pencarian lengkap untuk area peta?

Kode

jsFiddle

HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
    <style type="text/css">
        html, body, #map-canvas {
            height: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
    <script src="JavaScriptMin.js"></script>
</head>
<body>
    <div id="map-canvas"></div>
</body>
</html>

skrip java

var map;
var infoWindow;
var service;

function initialize() {
    var mapOptions = {
        zoom: 5,
        center: new google.maps.LatLng(-27.984113, 153.411076)
    };

    map = new google.maps.Map(document.getElementById('map-canvas'),
        mapOptions);

    google.maps.event.addListener(map, 'bounds_changed', performSearch);
}

function loadScript() {
    var script = document.createElement('script'),
        myScript = 'https://maps.googleapis.com/maps/api/js?signed_in=true&v=2.exp' +
                    '&libraries=weather,places&sensor;=true_or_false&signed_in=true&callback=initialize&region=au'
    script.type = 'text/javascript';
    script.src = myScript;
    document.body.appendChild(script);
}

window.onload = loadScript;

function performSearch() {
    var request = {
        bounds: map.getBounds(),
        keyword: 'caravan parks'
    };

    if (!infoWindow) { infoWindow = new google.maps.InfoWindow() };
    if (!service) { service = new google.maps.places.PlacesService(map) };
    service.radarSearch(request, searchCallback);
}

function searchCallback(results, status, pagination) {
    if (results) { console.log('searchCallback, results count is ' + results.length) };
    if (status == google.maps.places.PlacesServiceStatus.OK) {

        for (var i = 0; i < results.length; i++) {
            var place = results[i];
            createMarker(results[i]);
        }
    } else {
        console.log('search failed')
    }
}

function createMarker(place) {
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
        map: map,
        icon: {
            path: google.maps.SymbolPath.CIRCLE,
            scale: 2,
            opacity: 1,
            fillColor: 'red',
            fillOpacity: 1,
            strokeColor: 'red',
            strokeWeight: 1
        },
        position: place.geometry.location
    });    
}

Catatan:

  1. Tidak ada bedanya jika saya menyertakan kunci API yang valid.
  2. Jika saya menggunakan parameter radius, ia mengembalikan 148 lokasi tetapi dengan batas yang disetel ke map.getBounds saya hanya mendapatkan 145. Dugaan saya pada tahap ini adalah bahwa area pencarian, jika menggunakan parameter batas, adalah persegi panjang yang terdapat dalam lingkaran radius 50 km . Ini tidak jelas bagi saya berdasarkan dokumentasi.

person Cool Blue    schedule 14.02.2015    source sumber
comment
Harap berikan Contoh Minimal, Lengkap, Teruji, dan Dapat Dibaca yang menunjukkan masalah tersebut.   -  person geocodezip    schedule 14.02.2015
comment
Saya melihat masalah dengan contoh Anda, namun saya tidak dapat menjelaskannya. Teori Anda mengenai ukuran area pencarian masuk akal. lingkaran 60 km berpusat pada hasil   -  person geocodezip    schedule 15.02.2015


Jawaban (1)


Saya akhirnya berhasil menyelesaikannya sendiri, temuan saya adalah sebagai berikut...

  1. Saat menggunakan parameter lokasi dan radius dari objek permintaan, area pencarian sebenarnya adalah yang berisi kotak radius pencarian. Area pencarian maksimum adalah luas persegi lingkaran dengan radius 50 km (yang merupakan nilai maksimum radius pencarian yang terdokumentasi.
  2. Saat menggunakan parameter bounds pada objek permintaan, area maksimum yang dicari adalah 100 km persegi. Jika batasannya lebih besar dari itu, pencarian masih dibatasi pada 100 km persegi. Dokumentasinya tidak jelas mengenai hal ini tetapi cukup logis.
person Cool Blue    schedule 15.02.2015