我正在尝试在我的Android设备上显示一个反应原生地图标记(它在iOS上工作得很好),但它给我抛出了一个索引越界异常:无效索引1,渲染时大小为0错误。
https://i.stack.imgur.com/9Scbw.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 组件中删除视图块,但这似乎没有帮助。在实际的应用程序中,我计划通过一个似乎在fitToCoordinates方法中工作的对象传递坐标。
这个问题没有给出解决方案,但它帮助我理解并修复了我的问题。我不认为View
是问题,而是组件的渲染顺序。似乎,在Android上,渲染顺序很重要。因此,将Markers
渲染为MapView
的第一个孩子为我修复了它。
这里也提到:https://github.com/react-community/react-native-maps/issues/291
希望我能帮忙!
关系,实际上是MapView中的视图组件导致了问题。
将内部视图和市场放在一个视图中,这将解决问题。
,解决方案是从中删除任何视图(可以是视图,图像等)。它与对象或秩序都没有联系。