react native maps initialRegion、region和animateToRegion不适用于iOS,但适用于Android

react native maps initialRegion、region和animateToRegion不适用于iOS,但适用于Android,ios,react-native,react-native-maps,Ios,React Native,React Native Maps,我有一个使用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 => {

我有一个使用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>
        )
    }
GetRegionFor坐标(点){
//点应该是{纬度:X,经度:Y}的数组
让minX,maxX,minY,maxY;
var-arr=[];
Object.keys(points.map)(key=>{
var点=点[关键点];
arr.push([{纬度:点.纬度,经度:点.经度}])
})
点数=arr;
var first=点[0];
minX=第一个[0]。纬度;
maxX=第一个[0]。纬度;
minY=第一个[0]。经度;
maxY=第一个[0]。经度;
//计算矩形
points.map((点)=>{
minX=Math.min(minX,点[0]。纬度);
maxX=Math.max(maxX,点[0]。纬度);
minY=Math.min(minY,点[0]。经度);
maxY=Math.max(maxY,点[0]。经度);
});
常数midX=(minX+maxX)/2;
常数midY=(minY+maxY)/2;
常量deltaX=(maxX-minX);
常数deltaY=(maxY-minY);
返回{
纬度:中纬,
经度:米,
latitudeDelta:deltaX,
长德尔塔:德尔塔
};
}
componentDidMount(){
var事件=this.props.event;
var mapData=JSON.parse(event.map);
var map=mapData[0];
var标记=[];
Object.keys(map.markers).map(key=>{
var marker=map.markers[key];
var obj=[{纬度:parseFloat(marker.lat),经度:parseFloat(marker.lng)}];
markers.push(obj[0]);
});
var region=此.getRegionForCoordinates(标记);
设置超时(()=>{
此参考区域(区域1);
}, 5000)
}
renderMap(){
var事件=this.props.event;
var mapData=JSON.parse(event.map);
var map=mapData[0];
返回(
{
this.ref=map
}}
customMapStyle={customMapStyle}
key={`${Date.now()}`}
>
{
map.markers.map(marker=>{
返回(
)
})
}
)
}
在这段代码中,我试图根据将在地图上显示的标记为一个区域设置动画。纬度、经度、纬度和经度都是正确的,因为它们适用于Android

然而,在iOS上,无论是在模拟器中还是在设备上,它都会动画到一个完全错误的区域

设置initialRegion或region似乎没有任何区别

我尝试了很多不同的方法,比如在onMapReady函数中设置动画、使用setTimeout延迟动画、更新/降级react原生贴图等等。。我不知道这是一个bug还是我在项目中设置的错误

React本机版本为0.59.0


react native maps版本是0.27.1。

如果设置provider={provider\u GOOGLE},则它不起作用。除去这一点,它甚至可以在IOS上运行。不知道为什么。我也面临同样的问题

使用计时方法:
这对我有效

如果设置provider={provider\u GOOGLE},则无效。除去这一点,它甚至可以在IOS上运行。不知道为什么。我也面临同样的问题

使用计时方法: 这对我有用