如何在React-Native中为MapView组件的纬度和经度值计算delta-latitude和delta-longitude值。谢谢
如果你有一个坐标数组,并且你想要一个适合所有这些点的区域,你可以这样做:
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。
注意:我的示例中没有错误检查。
longitudeDelta
和latitudeDelta
将在源代码MapView中描述,它表示您希望显示的最小和最大点之间的差异。
因此,如果要查找latitudeDelta,则应计算纬度之间的最大差异,同样地计算经度delta。您可以查看Ryan H.的答案,了解实际的实施情况。