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
Html 移动多段线/多边形顶点时获取更新坐标。(谷歌地图)_Html_Google Maps_Vertex - Fatal编程技术网

Html 移动多段线/多边形顶点时获取更新坐标。(谷歌地图)

Html 移动多段线/多边形顶点时获取更新坐标。(谷歌地图),html,google-maps,vertex,Html,Google Maps,Vertex,我已经知道如何在添加多段线或多边形或删除顶点时捕捉坐标,但似乎无法应用如何在移动多段线或多边形顶点时捕捉坐标(仅限顶点,我已故意禁用拖动整个多边形)。我将此链接用作参考: 以下是我的完整HTML代码(为了方便读者,在pastebin发布): 以下是我试图做出接球动作的部分: google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) { var newShape = e.overlay; n

我已经知道如何在添加多段线或多边形或删除顶点时捕捉坐标,但似乎无法应用如何在移动多段线或多边形顶点时捕捉坐标(仅限顶点,我已故意禁用拖动整个多边形)。我将此链接用作参考:

以下是我的完整HTML代码(为了方便读者,在pastebin发布):

以下是我试图做出接球动作的部分:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {

  var newShape = e.overlay;
  newShape.type = e.type;

  if (e.type !== google.maps.drawing.OverlayType.MARKER) {
    // Switch back to non-drawing mode after drawing a shape.
    drawingManager.setDrawingMode(null);

    ///////////////////////////////////////////////////////////
    //This section is intended to catch vertex moves...currently not

    google.maps.event.addListener(newShape, 'polygoncomplete', function(e) {
      google.maps.event.addListener(newShape.getPath(), 'set_at', function(e) {
        google.maps.event.addListener(newShape.getPath(), 'insert_at', function(e) {
          var path = newShape.getPaths().getAt(e.path);
          document.getElementById("polygonEditTest").value += path.getAt(e.vertex) + '\n';
        })
      });
    });
    google.maps.event.addListener(newShape, 'polylinecomplete', function(e) {
      google.maps.event.addListener(newShape.getPath(), 'set_at', function(e) {
        google.maps.event.addListener(newShape.getPath(), 'insert_at', function(e) {
          var path = newShape.getPaths().getAt(e.path);
          document.getElementById("polylineEditTest").value += path.getAt(e.vertex) + '\n';
        })
      });
    });
    ///////////////////////////////////////////////////////////

    // Add an event listener that selects the newly-drawn shape when the user
    // clicks it.
    google.maps.event.addListener(newShape, 'click', function(e) {
      if (e.vertex !== undefined) {
        if (newShape.type === google.maps.drawing.OverlayType.POLYGON) {
          var path = newShape.getPaths().getAt(e.path);
          path.removeAt(e.vertex);

          /////////////////////////////////////////////////////////////
          //Update textboxes with geo data when polygon vertex deleted
          document.getElementById("action_gon").value = ''
          document.getElementById("action_gon").value += "#polygon vertex deleted\n";
          for (var i = 0; i < path.length; i++) {
            document.getElementById("action_gon").value += path.getAt(i) + '\n';
          }
          //
          if (path.length < 3) {
            newShape.setMap(null);
            document.getElementById("action_gon").value = 'This box shows coords when a new POLYGON shape is added and/or vertex deleted'
          }
        }

        if (newShape.type === google.maps.drawing.OverlayType.POLYLINE) {
          var path = newShape.getPath();
          path.removeAt(e.vertex);
          /////////////////////////////////////////////////////////////
          //Update textboxes with geo data when polyline vertex deleted
          document.getElementById("action_line").value = ''
          document.getElementById("action_line").value += "#polyline vertex deleted\n";
          for (var i = 0; i < path.length; i++) {
            document.getElementById("action_line").value += path.getAt(i) + '\n';
          }
          //
          if (path.length < 2) {
            newShape.setMap(null);
            document.getElementById("action_line").value = 'This box shows coords when a new POLYLINE shape is added and/or vertex deleted'
          }
        }
      }

      setSelection(newShape);
    });
    setSelection(newShape);
  } else {
    google.maps.event.addListener(newShape, 'click', function(e) {
      setSelection(newShape);
    });
    setSelection(newShape);
  }
});
google.maps.event.addListener(drawingManager,'OverlyComplete',函数(e){
var newShape=e.overlay;
newShape.type=e.type;
if(e.type!==google.maps.drawing.overlytype.MARKER){
//绘制形状后切换回非绘制模式。
drawingManager.setDrawingMode(空);
///////////////////////////////////////////////////////////
//本节旨在捕捉顶点移动…目前没有
google.maps.event.addListener(newShape,'polygoncomplete',function(e){
google.maps.event.addListener(newShape.getPath(),'set_at',函数(e){
google.maps.event.addListener(newShape.getPath(),'insert_at',函数(e){
var path=newShape.getpath().getAt(e.path);
document.getElementById(“polygonEditTest”).value+=path.getAt(e.vertex)+'\n';
})
});
});
google.maps.event.addListener(newShape,'polylinecomplete',函数(e){
google.maps.event.addListener(newShape.getPath(),'set_at',函数(e){
google.maps.event.addListener(newShape.getPath(),'insert_at',函数(e){
var path=newShape.getpath().getAt(e.path);
document.getElementById(“polylineEditTest”).value+=path.getAt(e.vertex)+'\n';
})
});
});
///////////////////////////////////////////////////////////
//添加一个事件侦听器,当用户
//点击它。
google.maps.event.addListener(新闻形状,'click',函数(e){
如果(例如顶点!==未定义){
if(newShape.type===google.maps.drawing.overlytype.POLYGON){
var path=newShape.getpath().getAt(e.path);
移除路径(e.顶点);
/////////////////////////////////////////////////////////////
//删除多边形顶点时使用地理数据更新文本框
document.getElementById(“操作”)。值=“”
document.getElementById(“action_gon”).value+=“#多边形顶点已删除\n”;
对于(变量i=0;i
编辑:我认为这是演示问题所需的最少代码(无法捕获顶点移动)


试验
#地图,html,正文{
填充:0;
保证金:0;
宽度:100%;
身高:100%;
}
//地图规格
函数初始化(){
var map=new google.maps.map(document.getElementById('map'){
缩放:18,
中心:新google.maps.LatLng(33.27144940863937,-117.2983479390361),
mapTypeId:google.maps.mapTypeId.HYBRID,
disableDefaultUI:true,
动物控制:对,
mapTypeControl:false,
scaleControl:对,
街景控制:对,
旋转控制:对,
fullscreenControl:错误
});
var多选项={
冲程重量:0,
填充不透明度:0.45,
是的,
可拖动:错误
};
//创建附着到地图的图形管理器,允许用户绘制
//标记和线条
drawingManager=新建google.maps.drawing.drawingManager({
drawingControlOptions:{
位置:google.maps.ControlPosition.TOP_CENTER,
绘图模式:[
google.maps.drawing.OverlyType.POLYLINE,
google.maps.drawing.overlytype.POLYGON
]
},
标记选项:{
可拖动:错误
},
多段线选项:{
是的,
可拖动:错误
},
//矩形选项:多选项,
多基因选择:多基因选择,
地图:地图
});
//////////////////////////////////////////
风险提取经理;
变量选择形状;
功能选择(){
如果(selectedShape){
如果(selectedShape.type!=='marker'){
selectedShape.setEditable(false);
}
selectedShape=null;
}
}
功能选择(形状){
如果(shape.type!=='marker'){
选举();
shape.setEditable(true);
}
selectedShape=形状;
}
//////////////////////////////////////////
google.maps.event.addListener(drawingManager,'OverlyComplete',函数(e){
var newShape=e.overlay;
newShape.type=e.type;
if(e.type!==google.maps.drawing.overlytype.MARKER){
//绘制形状后切换回非绘制模式。
drawingManager.setDrawingMode(空);
google.maps.event.addListener(newShape,'polygoncomplete',function(e){
google.maps.event.addListener
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="UTF-8">
<title>Test</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing,places"></script>

<style type="text/css">
#map, html, body {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}

</style>

<script type="text/javascript">

//Map Specifications

function initialize () {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 18,
center: new google.maps.LatLng(33.27144940863937, -117.2983479390361),
mapTypeId: google.maps.MapTypeId.HYBRID,
disableDefaultUI: true,
zoomControl: true,
mapTypeControl: false,  
scaleControl: true,
streetViewControl: true,
rotateControl: true,
fullscreenControl: false
});

var polyOptions = {
strokeWeight: 0,
fillOpacity: 0.45,
editable: true,
draggable: false
};

// Creates a drawing manager attached to the map that allows the user to draw
// markers and lines
drawingManager = new google.maps.drawing.DrawingManager({
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [
google.maps.drawing.OverlayType.POLYLINE,
google.maps.drawing.OverlayType.POLYGON
]
},
markerOptions: {
draggable: false
},
polylineOptions: {
editable: true,
draggable: false
},
//rectangleOptions: polyOptions,
polygonOptions: polyOptions,
map: map
});

//////////////////////////////////////////
var drawingManager;
var selectedShape;
function clearSelection () {
if (selectedShape) {
    if (selectedShape.type !== 'marker') {
        selectedShape.setEditable(false);
    }
    selectedShape = null;
}
}

function setSelection (shape) {
if (shape.type !== 'marker') {
    clearSelection();
    shape.setEditable(true);
}
selectedShape = shape;
}
//////////////////////////////////////////

google.maps.event.addListener(drawingManager, 'overlaycomplete', function (e) {
var newShape = e.overlay;         
newShape.type = e.type;

if (e.type !== google.maps.drawing.OverlayType.MARKER) {
    // Switch back to non-drawing mode after drawing a shape.
    drawingManager.setDrawingMode(null);

    google.maps.event.addListener(newShape, 'polygoncomplete', function (e) {
    google.maps.event.addListener(newShape.getPath(), 'set_at', function() {
    google.maps.event.addListener(newShape.getPath(), 'insert_at', function() {
    var path = newShape.getPaths().getAt(e.path);
    document.getElementById("polygonEditTest").value += path.getAt(e.vertex) + '\n';
    })
    });
    });

    google.maps.event.addListener(newShape, 'polylinecomplete', function (e) {
    google.maps.event.addListener(newShape.getPath(), 'set_at', function(e) {
    google.maps.event.addListener(newShape.getPath(), 'insert_at', function(e) {
    var path = newShape.getPaths().getAt(e.path);
    document.getElementById("polylineEditTest").value += path.getAt(e.vertex) + '\n';
    })
    });
    });

    // Add an event listener that selects the newly-drawn shape when the user
    // clicks it.
    setSelection(newShape);}
else {
    google.maps.event.addListener(newShape, 'click', function (e) {
    setSelection(newShape);
    });
    setSelection(newShape);
    }
});
}

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

</script>
</head>
<body>
<div id="geoinfoboxes">
    <textarea id="polylineEditTest" rows="8" cols="46">This box shows coords for edited POLYLINES (ie. moving a vertex)</textarea>
    <textarea id="polygonEditTest" rows="8" cols="46">This box shows coords for edited POLYGONS (ie. moving a vertex)</textarea>
</div>
<div id="map"></div>
</body>
</html>
google.maps.event.addListener(polygon.getPath(), 'set_at', processVertex);
google.maps.event.addListener(polygon.getPath(), 'insert_at', processVertex);
function processVertex(e) {
  var logStr = ""
  for (var i = 0; i < this.getLength(); i++) {
    logStr += this.getAt(i).toUrlValue(6) + " ";
  }
  console.log(logStr);
}