我已经找到了中心点,东北和西南坐标使用后边界,但东北和西南坐标是在多边形之外,如何控制
LatLngBounds latLngBounds = getPolygonCenterPoint(mMap, mLatLngCollection);
mPolylineOptions.color(Color.GREEN);
mPolylineOptions.add(latLngBounds.southwest);
mPolylineOptions.add(latLngBounds.northeast);
mMap.addPolyline(mPolylineOptions);
mMap.addMarker(new MarkerOptions()
.position(latLngBounds.southwest));
mMap.addMarker(new MarkerOptions()
.position(latLngBounds.northeast));
mMap.addMarker(new MarkerOptions()
.position(latLngBounds.getCenter()));

`
private LatLngBounds getPolygonCenterPoint(GoogleMap mMap, List
< LatLng > polygonPointsList) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (int i = 0; i < polygonPointsList.size(); i++) {
builder.include(polygonPointsList.get(i));
mMap.addMarker(new MarkerOptions()
.position(polygonPointsList.get(i)));
}
LatLngBounds bounds = builder.build();
return bounds;
} `
发布于 2019-03-30 00:52:34
这是使用北上地图上的布里斯班、悉尼、墨尔本和阿德莱德的点的边界框。如您所见,NE、SW角点与绿色线的端点一致。只有一种情况下,边界框不会在所包含的多边形之外:当多边形是沿纵线定向的矩形时,因此与边界框重合。
我建议重申你的目标是什么--如果有帮助的话,可以使用图片。
为了防止绿线超出多边形边界,您必须计算遇到的每条边的绿线的交点-这对于任意情况都是具有挑战性的。

对于任意情况(如下图所示),我怀疑您要找的是NE-SW对角线的相交部分,如绿线(实线,无虚线)。
由于您有中心点Z和角点NE、SW,因此可以使用SphericalUtil.computeHeading从Z-NE和Z-SW计算航向。(Hne,Hsw)。
找到边和对角线的交点的最佳解决方法是:首先将直线转换为笛卡尔平面-计算交点-然后转换回WGS84椭球体(有错误)。

图形礼遇在线包围盒工具:https://boundingbox.klokantech.com/。
https://stackoverflow.com/questions/55412030
复制相似问题