我试图在折线周围留出空间,将其手动绘制到MapView
上,并设置initialRegion
,结果是通过此函数运行所有数据点:
export const getRegion = points => {
const pointArray = [].concat(points).filter(point => point != null)
if (pointArray.length < 1) return defaultRegion
let minLat = 90
let maxLat = -90
let minLng = 180
let maxLng = -180
pointArray.forEach(({ lat, lng }) => {
if (lat < minLat) minLat = lat
if (lat > maxLat) maxLat = lat
if (lng < minLng) minLng = lng
if (lng > maxLng) maxLng = lng
})
return {
latitude: (maxLat + minLat) / 2,
longitude: (maxLng + minLng) / 2,
latitudeDelta: (maxLat - minLat),
longitudeDelta: (maxLng - minLng),
}
}
这可以按预期工作,但是问题是点/标记可能很难靠在屏幕的边缘。
我尝试使用mapPadding
,它似乎可行(因为地图的“ Google”徽标和控件(点击标记时的方向按钮)确实会受到它的影响),但是折线或其他任何东西作为孩子添加到地图不会受到影响,并且会紧贴屏幕边缘。
我是用mapPadding
弄错了树还是错过了什么?如果mapPadding
不是我想要的,那么有人可以建议另一种方法来实现这一目标吗?