Javascript 谷歌地图API v3唯一标记JS

Javascript 谷歌地图API v3唯一标记JS,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我试图在一个简单的javascript web API上有一个唯一的标记,没有jQuery 我第一次尝试在每次单击地图时删除上一个标记,使用 marker.setMap(null); 就在创建一个新的,但它阻止了新的一个,没有出现在屏幕上 我可以通过按钮或其他事件轻松删除标记,但有没有方法可以自动删除标记,并且在地图上只有一个标记可以拖动:true可以移动它,dblClick可以删除它 标记创建由通常的 google.maps.event.addListener(map, "click", f

我试图在一个简单的javascript web API上有一个唯一的标记,没有jQuery

我第一次尝试在每次单击地图时删除上一个标记,使用

marker.setMap(null);
就在创建一个新的,但它阻止了新的一个,没有出现在屏幕上

我可以通过按钮或其他事件轻松删除标记,但有没有方法可以自动删除标记,并且在地图上只有一个标记可以拖动:true可以移动它,dblClick可以删除它

标记创建由通常的

google.maps.event.addListener(map, "click", function(event) {...

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

该界面用于定义单个位置,因此我不希望屏幕上出现多个标记;坐标随后保存在数据库中。

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

使用单个markermarker的示例将存储为地图的属性:

    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
                             });
    });

请看一看。当你问一个由你的代码引起的问题时,如果你提供人们可以用来重现问题的代码,你会得到更好的答案。现在它工作得很好!谢谢唯一的问题是我使用了一个函数来更改document.getElementByIdlocation\u name.onchange=function{marker.title=document.getElementByIdlocation\u name.value;},现在当我编辑表单字段id=location\u name时,它不再更新了。。。还有一个范围问题?现在可以通过map.marker访问标记。但是,不清楚映射在实现中是否是全局可访问的,您可以在创建标记时添加更改侦听器,而不存在任何范围问题。请参阅上面修改的代码。谢谢!我们有地图标记,这个标记,那个标记!我真的需要更多地学习js。有趣的是,dblClick、drag值更新和marker.title更改只有在第二次单击地图后才起作用,第一次单击创建标记,但这些功能只有在我第二次单击后才被激活。我记得在javascript中看到google maps已经不相关了。map.marker,this.marker和that.marker都是同一个对象,这取决于您访问`` map对象的范围。将映射存储为全局变量后,只能使用map.marker。与第二次单击相关:dbclick`会立即激活,但dblclick当然需要两次单击。标题的问题如下:当您更改值时,会触发输入的更改事件,并且输入失去焦点。g。当你点击地图,但你也可以点击其他地方。您可以改用输入事件。我的代码中没有观察到标记拖动的内容,因此我不能在没有看到代码的情况下告诉您任何事情。