簡體   English   中英

無法從谷歌地圖 api 中刪除標記

[英]Cannot remove markers from google maps api

我的程序中的標記不會使用 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);

      });

 }

火力基地:

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

我只是使用 firebase 來獲取 html 選擇選項的每次更改的經緯度,並且它完美地工作。 這次的問題是它不能刪除標記。 我應該以不同的方式執行 deleteMarkers 嗎?

感謝@StackSlave 的回答。 我能夠通過創建google_marker並將其推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);
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM