这就是我的做法。
本质上,您需要在状态中保留一组标记,然后从状态中删除要删除的标记。
我将标记列表存储在这样的状态中:
this.state = {
markers: [],
};
当您实际创建标记时,您将在函数中传递索引,该函数将从状态中删除标记。在这种情况下 onMarkerPress(index)
createMarkers() {
return this.state.markers.map((marker, index) => (
<Marker
draggable
onPress={event => this.onMarkerPress(index)}
key={index}
coordinate={{
latitude: parseFloat(marker.latitude),
longitude: parseFloat(marker.longitude),
}}
/>
));
}
这是 onMarkerPress 函数:
onMarkerPress(index) {
this.state.markers.splice(index, 1);
this.setState({markers: this.state.markers});
}
最后,您的地图组件将如下所示:
<MapView
style={styles.map}
mapType={'satellite'}
provider={PROVIDER_GOOGLE}
initialRegion={{
latitude: 45.50235905860018,
longitude: -73.60357092645054,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}
onLongPress={e => this.addNewMarker(e)}>
{this.createMarkers()}
</MapView>
就是这样!