4

我希望能够在 Google 地图上绘制形状(圆形、多边形和矩形),但我想限制可以绘制的形状的大小(面积)。因此,以圆圈为例,期望的行为是当用户开始从地图上的某个点拖动鼠标以形成圆圈时,圆圈会碰到一个不可见的边界并停止扩展。

我将定义大小/面积定义为它所覆盖的地理区域。理想情况下,我希望能够规定形状覆盖的地理区域的限制。因此,在圆形示例中,我可以指定圆形在其覆盖的地理区域达到(例如 10 平方公里)时停止扩展,而不管视口缩放级别如何。

我不知道这将如何用于绘制多边形,但我确信它有点复杂,因为多边形是分阶段绘制的(多次点击)......但一次一步。

4

1 回答 1

5

这是我可以为圆形场景提出的最佳解决方案。请注意,这不会在编辑圆时明确停止调整大小,但一旦用户释放调整大小,圆就会恢复到允许的最大大小。

根据上面的 chrismarx 和 zeusakm 注释,可能并不理想,但谷歌的 api 似乎没有任何本地方式可以在用户调整大小时设置严格的大小边界。

var shapeOptions = {
  fillColor: '#ff0000',
  fillOpacity: 0.50,
  map: map, // your map
  center: curLocation, // geo starting point
  draggable: true,
  editable: true,
  radius: 30 // initial circle radius in meters
};

// Add the circle to the map.
newCircle = new google.maps.Circle(shapeOptions);

var maxRadius = 100; // whatever max size you want to dictate

google.maps.event.addListener(newCircle,'radius_changed',function(){
    if (this.getRadius() > maxRadius) {
        this.setRadius(maxRadius);
    }
});

如果你想创建完全自定义的东西,这个解决方案也可能有用: 如何在谷歌地图上画圆时知道半径

于 2015-10-10T18:18:48.180 回答