Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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
Javascript 获取多边形所有点的数组-谷歌地图绘图工具API-3_Javascript_Google Maps_Google Maps Api 3_Google Polyline - Fatal编程技术网

Javascript 获取多边形所有点的数组-谷歌地图绘图工具API-3

Javascript 获取多边形所有点的数组-谷歌地图绘图工具API-3,javascript,google-maps,google-maps-api-3,google-polyline,Javascript,Google Maps,Google Maps Api 3,Google Polyline,我正在使用谷歌绘图工具在谷歌地图上绘制多边形/矩形,现在我需要显示位于绘制多边形内的标记,为此,我使用geometry.poly.containsLocation方法,该方法采用一个点(latLng)和一组多边形点。如果我使用maps.polygon,我可以通过poly.getPath()获得多边形点,但因为我使用的是maps.drawing.DrawingManager/google.maps.drawing.overlytype.polygon,所以不确定如何在这里找到点。谢谢 var

我正在使用谷歌绘图工具在谷歌地图上绘制多边形/矩形,现在我需要显示位于绘制多边形内的标记,为此,我使用geometry.poly.containsLocation方法,该方法采用一个点(latLng)和一组多边形点。如果我使用maps.polygon,我可以通过poly.getPath()获得多边形点,但因为我使用的是maps.drawing.DrawingManager/google.maps.drawing.overlytype.polygon,所以不确定如何在这里找到点。谢谢

  var drawingManager = new google.maps.drawing.DrawingManager({
  drawingMode: google.maps.drawing.OverlayType.POLYGON,
  drawingControl: true,
  drawingControlOptions: {
    position: google.maps.ControlPosition.TOP_CENTER,
    drawingModes: [
      google.maps.drawing.OverlayType.MARKER,
      google.maps.drawing.OverlayType.CIRCLE,
      google.maps.drawing.OverlayType.POLYGON,
      google.maps.drawing.OverlayType.POLYLINE,
      google.maps.drawing.OverlayType.RECTANGLE
    ]
  },
  markerOptions: {
    icon: 'images/car-icon.png'
  },
  circleOptions: {
    fillColor: '#ffff00',
    fillOpacity: 1,
    strokeWeight: 5,
    clickable: false,
    editable: true,
    zIndex: 1
  },
  polygonOptions: {
    fillColor: '#BCDCF9',
    fillOpacity: 0.5,
    strokeWeight: 2,
    strokeColor:'#57ACF9',
    clickable: false,
    editable: false,
    zIndex: 1
  }
});
console.log(drawingManager)
drawingManager.setMap(map)

看起来,当用户完成绘图时,
DrawingManager
将触发事件,事件处理程序将收到正常的
google.maps.Polygon
google.maps.Rectangle
,等等。我会试试的


与之稍有不同的解决方案,但使用相同的API调用:

google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
    var path = polygon.getPath()
    var coordinates = [];

for (var i = 0 ; i < path.length ; i++) {
      coordinates.push({
        lat: path.getAt(i).lat(),
        lng: path.getAt(i).lng()
      });
    }
    console.log(coordinates);
});
google.maps.event.addListener(drawingManager,'polygoncomplete',函数(polygon){
var path=polygon.getPath()
变量坐标=[];
对于(变量i=0;i
相关问题:比起手动循环,我更喜欢功能性方法
polygon.getPath().forEach((点)=>doSomething(点))
在我看来更好。这是另一个问题(和现有问题的副本),但第二部分有点硬编码。通过
array=path.getArray()
google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
    var path = polygon.getPath()
    var coordinates = [];

for (var i = 0 ; i < path.length ; i++) {
      coordinates.push({
        lat: path.getAt(i).lat(),
        lng: path.getAt(i).lng()
      });
    }
    console.log(coordinates);
});