mirror of
https://github.com/zhigang1992/react-native-gifted-chat.git
synced 2026-01-12 22:50:22 +08:00
69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
import PropTypes from 'prop-types';
|
|
import React from 'react';
|
|
import {
|
|
Linking,
|
|
Platform,
|
|
StyleSheet,
|
|
TouchableOpacity,
|
|
ViewPropTypes,
|
|
} from 'react-native';
|
|
import MapView from 'react-native-maps';
|
|
|
|
export default class CustomView extends React.Component {
|
|
render() {
|
|
if (this.props.currentMessage.location) {
|
|
return (
|
|
<TouchableOpacity style={[styles.container, this.props.containerStyle]} onPress={() => {
|
|
const url = Platform.select({
|
|
ios: `http://maps.apple.com/?ll=${this.props.currentMessage.location.latitude},${this.props.currentMessage.location.longitude}`,
|
|
android: `http://maps.google.com/?q=${this.props.currentMessage.location.latitude},${this.props.currentMessage.location.longitude}`
|
|
});
|
|
Linking.canOpenURL(url).then(supported => {
|
|
if (supported) {
|
|
return Linking.openURL(url);
|
|
}
|
|
}).catch(err => {
|
|
console.error('An error occurred', err);
|
|
});
|
|
}}>
|
|
<MapView
|
|
style={[styles.mapView, this.props.mapViewStyle]}
|
|
region={{
|
|
latitude: this.props.currentMessage.location.latitude,
|
|
longitude: this.props.currentMessage.location.longitude,
|
|
latitudeDelta: 0.0922,
|
|
longitudeDelta: 0.0421,
|
|
}}
|
|
scrollEnabled={false}
|
|
zoomEnabled={false}
|
|
/>
|
|
</TouchableOpacity>
|
|
);
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
const styles = StyleSheet.create({
|
|
container: {
|
|
},
|
|
mapView: {
|
|
width: 150,
|
|
height: 100,
|
|
borderRadius: 13,
|
|
margin: 3,
|
|
},
|
|
});
|
|
|
|
CustomView.defaultProps = {
|
|
currentMessage: {},
|
|
containerStyle: {},
|
|
mapViewStyle: {},
|
|
};
|
|
|
|
CustomView.propTypes = {
|
|
currentMessage: PropTypes.object,
|
|
containerStyle: ViewPropTypes.style,
|
|
mapViewStyle: ViewPropTypes.style,
|
|
};
|