从Google地图中删除固定标记

时间:2015-04-01 00:56:46

标签: javascript jquery css google-maps google-maps-api-3

如何删除固定标记,该标记添加到包含谷歌地图的div元素中。下面的代码行使用类&#39; centerMarker&#39;,$('<div/>').addClass('centerMarker').appendTo(map.getDiv());添加它 但我如何删除它(理想情况下使用Javascript)?

以下是添加固定标记的full JS Fiddle example(来自this stack overflow question)。 JS Fiddle示例中的代码也如下所示。

HTML

<div id="map_canvas"></div>

CSS

body,html,#map_canvas{height:100%;margin:0;}
#map_canvas .centerMarker{
  position:absolute;
  /*url of the marker*/
  background:url(http://maps.gstatic.com/mapfiles/markers2/marker.png) no-repeat;
  /*center the marker*/
  top:50%;left:50%;
  z-index:1;
  /*fix offset when needed*/
  margin-left:-10px;
  margin-top:-34px;
  /*size of the image*/
  height:34px;
  width:20px;
  cursor:pointer;
}

的Javascript

function initialize() {
        var mapOptions = {
          zoom: 14,
          center: new google.maps.LatLng(52.5498783, 13.425209099999961),
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById('map_canvas'),
            mapOptions);
        $('<div/>').addClass('centerMarker').appendTo(map.getDiv())
             //do something onclick
            .click(function(){
               var that=$(this);
               if(!that.data('win')){
                that.data('win',new google.maps.InfoWindow({content:'this is the center'}));
                that.data('win').bindTo('position',map,'center');
               }
               that.data('win').open(map);
            });
      }

      google.maps.event.addDomListener(window, 'load', initialize);

1 个答案:

答案 0 :(得分:1)

您可以使用GoogleMaps DOMEvents删除它,例如我们想要在点击时将其删除(似乎更合适,因为至少我们要在标记上显示标记,如果没有,只需删除它来自js代码)。

使用Google Maps API

根据您的示例,只需将此代码添加到initialize函数

google.maps.event.addDomListener(map, 'click', removeMarker());

以下是JSfiddle

如果您想提醒用户标记消失的原因,请改用函数,如下所示。

function removeMarker(ele){
           ele.remove();
            alert('Ok the marker is GONE!')
        }
 google.maps.event.addDomListener(map, 'click', removeMarker(this));

以下是具有该功能的其他JSFiddle

纯Javascript

如果您想使用纯Javascript代码在初始化函数之外删除它,请在注释上使用remove()方法,例如@Adam点,就像这样。

function removeMarker(elem){
  console.log('removed')
      elem = document.getElementById("map_canvas");
      elem.childNodes[0].remove()

}
setTimeout(function(){ removeMarker(this) }, 3000);

这是纯JS JSFiddle