Как рассчитать дельта-широту и долготу для компонента MapView в React-Native?

Как я могу вычислить значения дельта-широты и дельты-долготы, образующие значения широты и долготы для компонента MapView в React-Native. Благодарю вас

2 ответа

Если у вас есть массив координат и вы хотите область, которая будет соответствовать всем этим точкам, вы можете сделать что-то вроде этого:

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 с реактивно-родными картами.

Примечание: я не проверяю ошибки в моем примере.

longitudeDelta а также latitudeDelta Это будет описано в исходном коде MapView, где говорится о разнице между минимальной и максимальной точками, которые вы хотите отобразить.

Итак, если вы хотите найти latitudeDelta, вам следует рассчитать максимальную разницу между вашими широтами и аналогично для дельты долготы. Вы можете посмотреть на ответ Райана Х., чтобы увидеть реальную реализацию.

Другие вопросы по тегам