如何获得某些位置之间的中心点(LatLng)?

Na *_*Pro 3 android google-maps

任何人都可以帮助我获得中心点.我有6个LatLng对象,现在我需要让LatLng对象居中.非常感谢!

ant*_*nio 5

您需要计算由点定义的多边形的质心.维基百科将质心定义为:

平面图形的质心或几何中心是形状中所有点的算术平均("平均")位置

要计算有限点集质心,可以使用以下方法:

private LatLng computeCentroid(List<LatLng> points) {
    double latitude = 0;
    double longitude = 0;
    int n = points.size();

    for (LatLng point : points) {
        latitude += point.latitude;
        longitude += point.longitude;
    }

    return new LatLng(latitude/n, longitude/n);
}
Run Code Online (Sandbox Code Playgroud)

  • 不正确的答案!这在经度 -180/180 度附近的点上会失败。 (4认同)

Ant*_*nko 5

上面的Java 代码的Dart版本

LatLng computeCentroid(Iterable<LatLng> points) {
  double latitude = 0;
  double longitude = 0;
  int n = points.length;

  for (LatLng point in points) {
    latitude += point.latitude;
    longitude += point.longitude;
  }

  return LatLng(latitude / n, longitude / n);
}
Run Code Online (Sandbox Code Playgroud)


kev*_*evz 0

您可以获得如下中点 -

double lat1, lng1, lat2, lng2;

double midlat = (lat1 + lat2)/2;
double midlng = (lng1 + lng2)/2;
Run Code Online (Sandbox Code Playgroud)