Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 启用拖动时,Javascript Google Maps v3标记将不可见_Google Maps_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Google maps 启用拖动时,Javascript Google Maps v3标记将不可见

Google maps 启用拖动时,Javascript Google Maps v3标记将不可见,google-maps,google-maps-api-3,google-maps-markers,Google Maps,Google Maps Api 3,Google Maps Markers,我正在使用JavaScriptGoogleMapsAPIv3制作一个地图,在点击地图的地方逐点构建一个多边形。此外,我想使我放置在用户单击的位置的标记可以拖动,以使它们能够编辑多边形的形状 我举了一个例子: 这正是我想要的我想要它做的 我的问题是,当我使标记可拖动时,它在地图上就不可见了。 我在一个jsbin中复制了这个错误,只需取消对marker.setDragable(true)行的注释即可查看错误 有人知道如何解决这个问题吗?u可以将这样的属性设置为标记 var marker = new

我正在使用JavaScriptGoogleMapsAPIv3制作一个地图,在点击地图的地方逐点构建一个多边形。此外,我想使我放置在用户单击的位置的标记可以拖动,以使它们能够编辑多边形的形状

我举了一个例子: 这正是我想要的我想要它做的

我的问题是,当我使标记可拖动时,它在地图上就不可见了。 我在一个jsbin中复制了这个错误,只需取消对marker.setDragable(true)行的注释即可查看错误


有人知道如何解决这个问题吗?

u可以将这样的属性设置为标记

 var marker = new google.maps.Marker({
      position: e.latLng,
      map: map,
      draggable: false,
      title:'anytext'
  });
您可以删除下面的指定代码bcoz,该代码从ur层中删除标记

  google.maps.event.addListener(marker, 'click', function () {
      marker.setMap(null);
      for (var i=0, I = markers.length; i < I && markers[i] != marker; i++);
      markers.splice(i, 1);
      path.removeAt(i);
    });
google.maps.event.addListener(标记,'click',函数(){
marker.setMap(空);
对于(var i=0,i=markers.length;i
似乎这个问题的根本原因是地图的定义。您使用了:

    position: latLng,
而不是

    center: latLng,
当调用
marker.setDraggable()
时,为什么要删除标记?我不明白。即使标记单击事件处理程序被注释掉,标记也会被删除


更新:即使只是从地图选项中注释出
位置:latLng,
也会起作用,因为稍后使用
map.panTo(latLng)设置地图中心

试试这个

$(document).ready(function (){
//   Initialize map
  var latLng = new google.maps.LatLng(-37.8142026, 144.963785);  
  var mapOptions = {
    zoom: 10,
    panControl: true,
    zoomControl: true,
    zoomControlOptions: {
      style: google.maps.ZoomControlStyle.DEFAULT,
      position: google.maps.ControlPosition.TOP_LEFT
    },
    center: latLng,
    scaleControl: false,
    mapTypeControl: false,
    streetViewControl: false
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);




//   set up polygon creation
  var markers = [],
      path = new google.maps.MVCArray,
      poly = new google.maps.Polygon({
        strokeWeight: 3,
        fillColor: '#555FF'
      });

  poly.setMap(map);
  poly.setPaths(new google.maps.MVCArray([path]));

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


    var maker = new google.maps.Marker({
      position: evt.latLng,
      map: map,
      draggable: true

    });

    markers.push(maker);

//     Add marker dragend listener to move the path to the marker
    google.maps.event.addListener(maker, 'dragend', function () {
      for (var i=0, I = markers.length; i < I && markers[i] != maker; i++);
      path.setAt(i, maker.getPosition());
    });
    path.insertAt(path.length, evt.latLng);
  });



});
$(文档).ready(函数(){
//初始化映射
var latLng=新的google.maps.latLng(-37.8142026144.963785);
变量映射选项={
缩放:10,
泛控制:对,
动物控制:对,
ZoomControl选项:{
样式:google.maps.ZoomControlStyle.DEFAULT,
位置:google.maps.ControlPosition.TOP_左
},
中心:拉特林,
scaleControl:false,
mapTypeControl:false,
街景控制:错误
};
var map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
//设置多边形创建
var标记=[],
路径=新的google.maps.MVCArray,
poly=新的google.maps.Polygon({
冲程重量:3,
填充颜色:“#555FF”
});
poly.setMap(map);
poly.setpath(新的google.maps.MVCArray([path]);
google.maps.event.addListener(映射,'click',函数(evt){
var maker=new google.maps.Marker({
职位:evt.latLng,
地图:地图,
德拉格布尔:是的
});
推动(制造商);
//添加标记dragend listener以将路径移动到标记
google.maps.event.addListener(maker'dragend',function(){
对于(var i=0,i=markers.length;i
这很好,但这不会影响标记的可见性。这不是一个好答案。仅将标记设置为可拖动不应触发标记上的单击事件。太好了,谢谢!我也会投票,但我没有这个名声