2016-06-29 2 views
1

Я основал эту функцию в учебных пособиях API Карт Google.Функции Google Maps

  • Неисправен элемент снятия маркеров.
  • Информационное окно открывается только на одном маркере, даже если я нажму на другой.

"gpsarray" содержит массивы с информацией о местоположении, разделенных запятыми.

var map; 
var markers = []; 

function markersAdd(gpsarray){ 
    // Remove all Google Maps Markers 
    for (var i = 0; i < markers.length; i++) { 
     markers[i].setMap(map); 
    } 
    markers = []; 

    // Loop the array and add the corresponding markers 
    for (var i = 0; i < gpsarray.length; i++) { 
     gps = gpsarray[i].split(","); 
     latitude = parseFloat(gps[4]); 
     longitude = parseFloat(gps[3]); 
     var marker = new google.maps.Marker({ 
      position: {lat: latitude, lng: longitude}, 
      map: map, 
      title: gps[0] 
      }); 
     markers.push(marker); 

     // Add a new infowindow 
     var infowindow = new google.maps.InfoWindow({ 
      content: "Datetime: " + gps[1] 
     }); 
     marker.addListener('click', function() { 
      infowindow.open(map, marker); 
     }); 
} 

ответ

1

Чтобы удалить маркеры с карты, установите их свойство карты для null (не map).

Это:

markers[i].setMap(map); 

должно быть:

markers[i].setMap(null); 

Ваш вопрос о infoWindows является дубликатом Google Maps JS API v3 - Simple Multiple Marker Example (у вас есть только переменную один маркер в коде, когда цикл завершается в настоящее время, вы можете используйте функцию закрытия, чтобы связать прослушиватель кликов с каждым отдельным маркером, созданным на карте).