【问题标题】:Remove Fixed Marker From Google Maps从谷歌地图中删除固定标记
【发布时间】:2015-06-05 12:42:30
【问题描述】:

如何删除固定标记,该标记已添加到包含谷歌地图的 div 元素中。下面的代码行使用类'centerMarker'添加它,$('<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);

【问题讨论】:

  • jQuery.remove api.jquery.com/remove 只是好奇,但你为什么想要一个固定的标记(以便它独立于地图移动)?
  • @user44776 你找到解决方案了吗,如果没有给我更多关于你想要做什么的信息,所以我可以更新我的答案

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


【解决方案1】:

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

使用谷歌地图 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);

这里是纯JSJSFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2015-04-09
    • 2012-10-17
    • 2015-06-11
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多