如何在React-Native中计算MapView组件的delta纬度和经度?

问题描述 投票:6回答:2

如何在React-Native中为MapView组件的纬度和经度值计算delta-latitude和delta-longitude值。谢谢

android-mapview latitude-longitude react-native delta
2个回答
11
投票

如果你有一个坐标数组,并且你想要一个适合所有这些点的区域,你可以这样做:

regionContainingPoints(points) {
  var minX, maxX, minY, maxY;

  // init first point
  ((point) => {
    minX = point.latitude;
    maxX = point.latitude;
    minY = point.longitude;
    maxY = point.longitude;
  })(points[0]);

  // calculate rect
  points.map((point) => {
    minX = Math.min(minX, point.latitude);
    maxX = Math.max(maxX, point.latitude);
    minY = Math.min(minY, point.longitude);
    maxY = Math.max(maxY, point.longitude);
  });

  var midX = (minX + maxX) / 2;
  var midY = (minY + maxY) / 2;
  var midPoint = [midX, midY];

  var deltaX = (maxX - minX);
  var deltaY = (maxY - minY);

  return {
    latitude: midX, longitude: midY,
    latitudeDelta: deltaX, longitudeDelta: deltaY,
  };
}

let region = this.regionContainingPoints([
  {latitude: 47.12345, longitude: -124.12345},
  {latitude: 47.23456, longitude: -124.23456},
  {latitude: 47.34567, longitude: -124.34567},
]);

然后使用region和react-native-maps。

注意:我的示例中没有错误检查。


0
投票

longitudeDeltalatitudeDelta将在源代码MapView中描述,它表示您希望显示的最小和最大点之间的差异。

因此,如果要查找latitudeDelta,则应计算纬度之间的最大差异,同样地计算经度delta。您可以查看Ryan H.的答案,了解实际的实施情况。

© www.soinside.com 2019 - 2024. All rights reserved.