Google Maps API v3 UNIQUE标记JS

时间:2015-02-01 09:59:48

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

我试图在简单的javascript网络API上使用唯一标记,而不是jQuery。

我每次点击地图时都会尝试删除上一个标记

marker.setMap(null);

在创建新的之前,但它阻止了新的,屏幕上没有任何内容。

我可以使用按钮或其他事件轻松删除标记,但是有没有办法自动执行,并且在地图上只有一个标记(可拖动:true可以移动它,也许dblClick可以删除它)?

通常由

触发标记创建
google.maps.event.addListener(map, "click", function(event) {...

var marker = new google.maps.Marker({...

界面用于定义单个位置,因此我不想在屏幕上显示多个标记;然后将坐标保存在数据库中。

1 个答案:

答案 0 :(得分:0)

当您使用var - 关键字添加标记时,稍后将无法访问该变量,由于未定义的变量,setMap的调用失败(并停止进一步的脚本执行)。

使用单个标记的示例(标记将存储为地图的属性):

    google.maps.event.addListener(map, "click", function(event) {
      //closure for the map
      var that=this;
      //only create a single marker
      if(!this.marker){
         var input = document.getElementById("location_name");
         this.marker = new google.maps.Marker({draggable:true,title:input.value});
         google.maps.event.addListener(this.marker,'dblclick',function(){
            this.setMap(null);
         });
         //update title
         google.maps.event
          .addDomListener(input,
                          'change',
                          function(){ 
                            that.marker.setTitle(this.value);
                          }
                         );
      }
      //update position
      this.marker.setOptions({map      : this,
                              position : event.latLng
                             });
    });