Как рассчитать дельта-широту и долготу для компонента 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, вам следует рассчитать максимальную разницу между вашими широтами и аналогично для дельты долготы. Вы можете посмотреть на ответ Райана Х., чтобы увидеть реальную реализацию.