【发布时间】:2014-05-13 20:39:35
【问题描述】:
在谷歌地图上使用多边形时,可能会出现多边形会与地图重叠的情况。例如,当走到地图的右边缘,并放置点创建一个框,左点在地图的右边缘,右点在地图的左边缘重复(作为地图可以无限水平平移)。
也就是说,我会看到接近 +180 和 -180 极端值的点,例如:
[50, 178] top left
[50, -178] top right
[-50, -178] bottom right
[-50, 178] bottom left
这是从polygon.getPath()点的循环中取出时提供的数据。
google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) {
polySelected = true;
coords = new Array();
polygon.getPath().forEach(function (l, index) {
coords[index]="("+l.lat()+","+l.lng()+")"
});
}
根据这些数据,无法判断这些点是否真的穿过 180 子午线。如果我取出“左上”、“右上”,您将无法辨别用户的第二个点是向右(过 180)还是向左(形成一个非常大的框)。
有没有办法解决这个问题?比如没有像那样的“包装”坐标 [50, 182]?处理跨越边界并有数据表示的标准方法是什么?
谢谢!
编辑 - 这不是关闭多边形并让坐标捕捉到一个非常大的区域的情况。这种情况适用于法线多边形手动闭合,创建一个小的方形多边形,但是一个穿过地图水平重复并且结果坐标与穿过重复 180 子午线的多边形或非常宽的多边形无法区分(但垂直没有不同)并覆盖相反的区域。我希望我可以用图片来帮助解释,但我还没有这个功能。
回答 我没有办法回答我自己的问题,但是我已经想通了并想分享。我意识到您不能绘制纵向延伸超过 180 度的多边形的边缘。知道这一点,如果您有两个相差大于 180 的点,它会穿过 +/-180 子午线。
感谢所有提供支持的人!
【问题讨论】:
-
google.maps.LatLng class 支持可选的 noWrap 参数。多边形往往会走最短的路径,即使它穿过子午线,如果你想让它们走很长的路,你需要插入额外的顶点。
-
谢谢,我确实注意到了这一点,但是我正在使用 google.maps.drawing.DrawingManager 来创建多边形,但我还没有看到实现它的方法。
标签: javascript google-maps google-maps-api-3