react-native-maps marker throw和IndexOutofBoundsException:索引1无效,大小为0

时间:2017-01-27 12:03:02

标签: react-native react-native-android react-native-maps

我正在尝试在我的Android设备上显示一个react-native-maps Marker(它在iOS上工作得非常好)但是它给我一个IndexOutofBoundsException:索引1无效,渲染时大小为0错误。

http://i.imgur.com/owletnw.png

render() {
    const INITIAL_REGION = { latitude: 52.221835, longitude: 21.000896, latitudeDelta: 0.0922, longitudeDelta: 0.0421 };
    return (
        <MapView ref="map"
            showsUserLocation = { true }
            loadingEnabled = { true }
            showsTraffic = { false }
            showsBuildings = { false }
            style = { styles.map, {flex: 1} }
            initialRegion = { INITIAL_REGION }
        >
            <View style={{flex: 0.1, flexDirection: 'row', position: 'absolute', justifyContent: 'space-between', backgroundColor: 'transparent'}}>
                <Button onPress={() => this.showWithinRadius(5)}>Wszystkie ~5km</Button>
                <Button onPress={() => this.showWithinRadius(10)}>Wszystkie ~10km</Button>
                <Button onPress={() => this.showWithinRadius(15)}>Wszystkie ~15km</Button>
                <Button onPress={() => this.showAllOffers()}>Wszystkie oferty</Button>
            </View>
            { console.log(this.state.offerLocation) }
            <Marker
                coordinate = { {latitude: 52.259216308593, longitude: 21.041564941406} }
                title = { this.props.selectedOffer.offer.title }
            />
        </MapView>
    );
}

知道可能导致此行为的原因是什么?我尝试从MapView组件中删除View块,但这似乎没有帮助。在实际的应用程序中,我打算通过一个似乎在fitToCoordinates方法中工作的对象传递坐标。

4 个答案:

答案 0 :(得分:1)

没关系,事实上MapView中的View组件导致了这个问题。

答案 1 :(得分:1)

此问题没有解决方案,但是它帮助我理解和解决了我的问题。 我不认为View是问题,而是呈现组件的顺序。 在Android上,渲染顺序似乎很重要。 因此,将Markers渲染为MapView的第一个子代为我修复了此问题。

这里也提到: https://github.com/react-community/react-native-maps/issues/291

希望我正在帮助!

答案 2 :(得分:0)

将内部View和市场放入一个View中,这将解决问题。

答案 3 :(得分:0)

对我来说,解决方案是从中删除任何视图(可以是视图,图像等)。 它与对象没有关系,也与订单没有关系。