繁体   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