Я создал функцию, которая будет создавать массив маркеров с местами, полученными с помощью API Places.Параметр type используется для типа места, а значок используется для значка маркера.
function setPOIMarkerArray(type, icon) {
var array = new Array();
var request = {
location: map.getCenter(),
radius: '2000',
types: [type]
};
var service = new google.maps.places.PlacesService(map);
service.search(request, function(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (i in results) {
place = results[i];
var marker = new google.maps.Marker({
icon: icon,
position: new google.maps.LatLng(place.geometry.location.lat(), place.geometry.location.lng())
});
google.maps.event.addListener(marker, 'click', function() {
var content = '<img class="left-arrow-grocery" src="/img/leftArrow.png"><div class="grocery-infobox">' + place.name + '<br/>' + place.vicinity + '</div>';
ib.setContent(content);
ib.open(map, marker);
});
array.push(marker);
}
return array;
}
});
}
Когда я вызываю этот код, используя $(function(){});
, в котором я настраиваю свою карту и другие вещи, Я вызываю var groceryStores = setPOIMarkerArray('grocery_or_supermarket','grocery.png')
, но массив groceryStores становится пустым, если я console.log (groceryStores)
Если я console.log(array)
внутри setPOIMarkerArray, он действительно показывает результаты.
Я считаю,это связано с тем, что код не ожидает ответа от API Google.Что я могу сделать, чтобы это исправить, или в чем проблема?Спасибо