問題少なくとも20の結果を返すGoogleプレイスレーダー検索を実行しています。私のコードでは、検索結果の数を20に制限しています。埋め込まれたGoogleマップ(この部分は動作します)に最大20個のマーカーがあり、結果パネルに20個の場所が関連付けられています(これは、 t仕事)。しかし、結果パネルでは10の結果しか得られません。ここに私のコードは(その非同期以降)コールバックでレーダーの検索やaddResult機能を実行している:少なくとも20件ある場合、レンダリングは10件の検索結果しかありませんか? Google Places APIの使用
function getPlaces(placeQuery, locInput){
var location = new google.maps.LatLng(locInput.geometry.location.lat(), locInput.geometry.location.lng());
var queryValue = placeQuery.value;
var resultsLength;
var request = {
location: location,
radius: 3200,
keyword: queryValue
};
service = new google.maps.places.PlacesService(map);
service.radarSearch(request, function callback(results, status) {
if(status == google.maps.places.PlacesServiceStatus.OK) {
clearMarkers();
if(results.length < 20){
resultsLength = results.length;
}
else{
resultsLength = 20;
}
for (var i = 0; i < resultsLength; i++){
var markerLetter = String.fromCharCode('A'.charCodeAt(0)+ i);
var markerIcon = MARKER_PATH + markerLetter + '.png';
markers[i] = new google.maps.Marker({
position: results[i].geometry.location,
animation: google.maps.Animation.DROP,
icon: markerIcon
});
markers[i].placeResult = results[i];
google.maps.event.addListener(markers[i], 'click', showInfoWindow);
setTimeout(dropMarker(i), i * 100);
addResult(results[i], i);
}
}
});
}
はここに私のaddResult機能である:
function addResult(place, i) {
var name;
var address;
var results = document.getElementById("results");
service.getDetails({placeId: place.place_id}, function(result, status) {
if (status !== google.maps.places.PlacesServiceStatus.OK) {
return;
}
results.innerHTML += '<li>' + result.name + '</li>';
});
}
私はいくつかのデバッグテストとFOR-をしましたループが完全に実行されています。しかし、addResult関数のservice.getDetailsでは、10個のプレースIDのみが処理されます。理由はわかりません...注:jQueryや約束のライブラリなどを使用することはできません。
[、最小コンプリート、テストおよび読み取り可能な例]を提供してください(http://stackoverflow.com/help/mcve)を参照してください。 – geocodezip