Intereting Posts

Несколько маркеров на карте Google: отображается только последний маркер

У меня возникла проблема с отображением нескольких маркеров на моей карте. Код начинается с циклического перехода по массиву, а затем обратного геокодирования значений lat, lon перед отображением маркера и установки содержимого infoWindow на возвращаемый адрес.

Мои коды ниже.

for(var i=0; i < useNowArray.length; i++) { // plot useNow on map latlng = new google.maps.LatLng(useNowArray[i]['lat'], useNowArray[i]['lon']); console.log(useNowArray[i]['lat'] + useNowArray[i]['lon']); geocoder.geocode({'latLng': latlng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[0]) { marker = new google.maps.Marker({ position: latlng, map: map, icon: 'http://img.ruphp.com/php/blue-dot.png', title: results[0].formatted_address }); content = results[0].formatted_address; console.log(content); google.maps.event.addListener(marker, 'click', (function(marker, i) { return function() { infowindow.setContent(content); infowindow.open(map, this); } })(marker, i)); } } else { alert("Geocoder failed due to: " + status); } }); // end geocode function } var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

Проблема в том, что показан только мой последний маркер.

Что мне не хватает? 🙁

большое спасибо.

Ваша переменная маркера глобальна, геокодирование является асинхронным. Цикл выполняется, вызывая использование запросовNowArray.length, каждый из которых обновляет глобальный маркер с результирующей позицией. Когда цикл закончен, маркер остается в последнем месте в цикле. Аналогичные вопросы с решением проблемы:

  • API Google Maps v3 – fitBounds после нескольких запросов геокодера
  • Проблема с несколькими маркерами (API Карт Google v3)