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... Saat saya memindahkan tengah peta, lebih banyak lokasi ditambahkan...
Pertanyaan
Mengapa saya mendapatkan kurang dari 200 lokasi yang diiklankan dan bagaimana cara mendapatkan hasil pencarian lengkap untuk area peta?
Kode
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®ion=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:
- Tidak ada bedanya jika saya menyertakan kunci API yang valid.
- 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.