首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何控制latLngBounds.southwest和latLngBounds.northeast在多边形之外的来袭?

问如何控制latLngBounds.southwest和latLngBounds.northeast在多边形之外的来袭?
EN

Stack Overflow用户
提问于 2019-03-29 14:59:24
回答 1查看 118关注 0票数 0

我已经找到了中心点,东北和西南坐标使用后边界,但东北和西南坐标是在多边形之外,如何控制

代码语言:javascript
复制
     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())); 

​

​

`

代码语言:javascript
复制
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;
     } 

`

EN

回答 1

Stack Overflow用户

发布于 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/。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55412030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档