在使用可以检索200个结果和getDetails方法的radarSearch方法时,我是否知道如何从Google Map获取10个以上的数据结果?我希望所有标记信息都列在地图下方的空白处。但是,我只得到了10个。我可以知道这个问题吗? 10个结果保持不变,并且当浏览器刷新几次时可能只更改其中的一个。
以下是我用于从Google地图中检索信息并创建标记的代码。我使用雷达搜索方法来执行搜索。
function callback(results, status) {
if (status !== google.maps.places.PlacesServiceStatus.OK) {
console.error(status);
return;
}
for (var i = 0, result; result = results[i]; i++) {
addMarker(result);
}
}
function addMarker(place) {
var placesList = document.getElementById('test');
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location,
icon: {
url: 'http://maps.gstatic.com/mapfiles/circle.png',
anchor: new google.maps.Point(10, 10),
scaledSize: new google.maps.Size(10, 17)
}
});
service.getDetails(place, function(result, status) {
if (status !== google.maps.places.PlacesServiceStatus.OK) {
console.error(status);
return;
}
iname = result.name;
iLatitude = [result.geometry.location.lat()];
iLongitude = [result.geometry.location.lng()];
iAddress = [result.formatted_address];
placesList.innerHTML += '<li>' + iname +' '+ iAddress + '</li>';
});
}
结果的ScreenShot。 The marker result is nearly 200, while the listed down data only consists of 10
答案 0 :(得分:1)
实际上问题是由于OVER_QUERY_LIMIT问题,它可以在时间发送请求被延迟时绕过,可以实现setTimeout方法以避免OVER_QUERY_LIMIT问题。
替换下面的代码。可以检索地图上的所有标记数据(目前我在谷歌地图上有148个餐厅标记)
service.getDetails(place, function(result, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
iname = result.name;
iLatitude = [result.geometry.location.lat()];
iLongitude = [result.geometry.location.lng()];
iAddress = [result.formatted_address];
placesList.innerHTML += '<li>' + iname + ''+ iAddress + '</li>';
}
else if (status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
setTimeout(function() {
addMarker(place);
}, 200);
}
});