我正在开发一个应用程序,我在地图上绘制多边形,我使用的地图不是谷歌,它的Mapsforge开源离线地图库.i通过将geopoint转换为pixcel点,可以在地图上轻松绘制多边形。我想找到那个不规则的多边形,为此我做了很多尝试,但它让我失败了.. 我已尝试使用基本数学的计算区域但在这种情况下它不起作用的情况pixcel在改变缩放级别时正在改变。 这是数学逻辑: Math calculation
for(int miAreainc = 0;miAreainc < x.length-1; miAreainc++)
{
sumX += x[miAreainc] * y[miAreainc + 1];
sumY += y[miAreainc] * x[miAreainc + 1];
}
int unit = ((sumX - (sumY)) / 2);
AppLog.showLogE(TAG,"UNIT >> " + unit);
我发现函数停留在服务器端,从geopoint数组获取区域,但在这里我想让它脱机。 我到目前为止已经尝试但没有得到任何线索或结果.. 请帮帮我.. 感谢
答案 0 :(得分:2)
注意:我真的不知道答案是多么愚蠢。所以,如果它没有意义,请告诉我,我会删除它。
由于地图不在Cartesian Coordinate System,因此您的计算结果不会产生准确结果。 Spherical Trigonometry Spherical Polygon需要Calculating area enclosed by arbitrary polygon on Earth's surface,这不是一件容易的事。
在Projection.java
进行了很好的讨论。看一看。
但除了所有这些之外,我在mapsforge
中找到了{{3}},它有一种方法可以在特定缩放级别从GeoPoint
查找世界地图上的绝对像素坐标:
将给定的{@link GeoPoint}转换为绝对像素坐标 世界地图。
Point toPoint(GeoPoint in, Point out, byte zoomLevel);
我不是很了解,但我认为它会在投影地图上给你GeoPoint
的绝对坐标,这样你就可以使用笛卡尔计算。
答案 1 :(得分:2)
用于面积计算你需要使用单位计将lat,lon转换为笛卡尔坐标。 (不是像素)查看转换Moduls