【发布时间】:2020-10-04 17:59:04
【问题描述】:
我有一个使用 react-native-maps 的 React Native 项目:
getRegionForCoordinates(points) {
// points should be an array of { latitude: X, longitude: Y }
let minX, maxX, minY, maxY;
var arr = [];
Object.keys(points).map(key => {
var point = points[key];
arr.push([{latitude: point.latitude, longitude: point.longitude}])
})
points = arr;
var first = points[0];
minX = first[0].latitude;
maxX = first[0].latitude;
minY = first[0].longitude;
maxY = first[0].longitude;
// calculate rect
points.map((point) => {
minX = Math.min(minX, point[0].latitude);
maxX = Math.max(maxX, point[0].latitude);
minY = Math.min(minY, point[0].longitude);
maxY = Math.max(maxY, point[0].longitude);
});
const midX = (minX + maxX) / 2;
const midY = (minY + maxY) / 2;
const deltaX = (maxX - minX);
const deltaY = (maxY - minY);
return {
latitude : midX,
longitude : midY,
latitudeDelta : deltaX,
longitudeDelta : deltaY
};
}
componentDidMount() {
var event = this.props.event;
var mapData = JSON.parse(event.map);
var map = mapData[0];
var markers = [];
Object.keys(map.markers).map(key => {
var marker = map.markers[key];
var obj = [{ latitude: parseFloat(marker.lat), longitude: parseFloat(marker.lng) }];
markers.push(obj[0]);
});
var region = this.getRegionForCoordinates(markers);
setTimeout(() => {
this.ref.animateToRegion(region, 1);
}, 5000)
}
renderMap() {
var event = this.props.event;
var mapData = JSON.parse(event.map);
var map = mapData[0];
return (
<View>
<MapView
provider={PROVIDER_GOOGLE}
style={mapStyles.map}
ref={(map) => {
this.ref = map
}}
customMapStyle={customMapStyle}
key={ `${Date.now()}` }
>
{
map.markers.map(marker => {
return (
<EventMapMarker marker={marker} navigation={this.props.navigation} />
)
})
}
</MapView>
</View>
)
}
在此代码中,我尝试根据将在地图上显示的标记为区域设置动画。纬度、经度、纬度三角洲和经度三角洲是正确的,因为它们适用于 Android。
但是,在 iOS 上,它会在模拟器和设备上动画到完全错误的区域。
设置 initialRegion 或 region 似乎没有任何区别。
我尝试了很多不同的东西,比如在 onMapReady 函数中设置动画,使用 setTimeout 来延迟动画,更新/降级 react-native-maps 等等。我不知道这是一个错误还是我在项目中设置错误。
React Native 版本是 0.59.0。
react-native-maps 版本是 0.27.1。
【问题讨论】:
标签: ios react-native react-native-maps