Не удается удалить маркеры из API карт Google - PullRequest
0 голосов
/ 11 февраля 2020

Маркеры в моей программе просто не удаляются с помощью функции deleteMarkers ()

CSS:

 #map-canvas {
   margin: 0;
   padding: 0;
   height: 100%;
 }

HTML:

<div style="height:500px; width:750px;">
    <div id="map-canvas"></div>
</div>
<select class="form-control" name="dateSelect" id="dateSelect" onchange="dateSelect_Event();"></select>

Javascript:

var map; <--- global variables
var locations = [];
var lat_get = '';
var long_get = '';
var marker=[];
var infowindow;

function initMap() {
      map = new google.maps.Map(document.getElementById('map-canvas'), {
      center: {lat: 7.072617, lng: 125.599494},
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      zoom: 13,
      });
};

function deleteMarkers() {
      for (var i = 0; i < marker.length; i++ ) {
          marker[i].setMap(null);
      }
      marker.length = 0;
}

function dateSelect_Event() {
      deleteMarkers();
      infowindow = new google.maps.InfoWindow({});

      var locationsRef = firebase.database().ref("location");
           locationsRef.on('child_added', function(snapshot) {
                 var data = snapshot.val();
                 marker = new google.maps.Marker({
                      position: {
                        lat: parseFloat(data.latitude),
                        lng: parseFloat(data.longitude)
                      },
                      map: map
            });
            marker.addListener('click', (function(data) {
                  return function(e) {
                  infowindow.setContent(this.getPosition().toUrlValue(6)); 
                  infowindow.open(map, this);
                  }
            }(data)));
                  marker.setMap(map);

      });

 }

Firebase:

-databaseName
    --location
        ---latitude
        ---longitude

Я просто использую firebase, чтобы получить широту и долготу при каждом изменении опции выбора html, и она отлично работает. Проблема на этот раз в том, что он не может удалить маркеры. Должен ли я сделать deleteMarkers по-другому?

1 Ответ

0 голосов
/ 11 февраля 2020

Благодаря ответу @ StackSlave. Я смог успешно удалить его, создав и нажав google_marker в глобальной переменной marker.

function dateSelect_Event() {
      deleteMarkers();
      infowindow = new google.maps.InfoWindow({});

      var locationsRef = firebase.database().ref("location");
           locationsRef.on('child_added', function(snapshot) {
                 var data = snapshot.val();
                 var google_marker = new google.maps.Marker({
                      position: {
                        lat: parseFloat(data.latitude),
                        lng: parseFloat(data.longitude)
                      },
                      map: map
            });
            google_marker.addListener('click', (function(data) {
                  return function(e) {
                  infowindow.setContent(this.getPosition().toUrlValue(6)); 
                  infowindow.open(map, this);
                  }
            }(data)));
                  marker.push(google_marker);
      });
      marker.setMap(map);
 }
...