如何重新绘制与用户绘制的完全相同的多边形(超过 4 个顶点)?
How to redraw exactly the same polygon that was drawn by the user (more than 4 vertices)?
我的项目涉及允许用户在 Google 地图上绘制多边形,然后甚至检索该形状。为此,我将多边形路径存储在我的数据库中,并在稍后阶段查询它以再次为用户绘制它。这在我有简单的多边形(如三角形或正方形)时有效,但复杂的多边形很少与绘制的多边形相同。
我正在获取路径的坐标:
var polyArray = selectedShape.getPath().getArray();
我将这些值存储在我的数据库中。
要画画,我正在使用 google.maps.Polygon() :
var redrawnPolygon = new google.maps.Polygon({
paths: polygonCoords
});
正如你所见,多边形的图像与绘制的不一样,这是有道理的,因为 getPath() 存储的顶点可以产生多个多边形。如何确保原始多边形是绘制的多边形? getPath() 不应该自动添加更多顶点吗?我应该手动做吗?怎么样?
用户绘制:
使用 google.maps.Polygon() 重新绘制
正如@geocodezip 在上面的评论中指出的那样,问题的根本原因是我没有保留数据库中坐标的顺序。
以相同的顺序保存和获取坐标解决了这个问题,我现在可以重新创建与绘制的完全相同的多边形。
我的项目涉及允许用户在 Google 地图上绘制多边形,然后甚至检索该形状。为此,我将多边形路径存储在我的数据库中,并在稍后阶段查询它以再次为用户绘制它。这在我有简单的多边形(如三角形或正方形)时有效,但复杂的多边形很少与绘制的多边形相同。
我正在获取路径的坐标:
var polyArray = selectedShape.getPath().getArray();
我将这些值存储在我的数据库中。
要画画,我正在使用 google.maps.Polygon() :
var redrawnPolygon = new google.maps.Polygon({
paths: polygonCoords
});
正如你所见,多边形的图像与绘制的不一样,这是有道理的,因为 getPath() 存储的顶点可以产生多个多边形。如何确保原始多边形是绘制的多边形? getPath() 不应该自动添加更多顶点吗?我应该手动做吗?怎么样?
用户绘制:
使用 google.maps.Polygon() 重新绘制
正如@geocodezip 在上面的评论中指出的那样,问题的根本原因是我没有保留数据库中坐标的顺序。
以相同的顺序保存和获取坐标解决了这个问题,我现在可以重新创建与绘制的完全相同的多边形。