105 lines
2.8 KiB
JavaScript
105 lines
2.8 KiB
JavaScript
import * as React from 'react';
|
|
import {Dimensions, StyleSheet, Text, View} from 'react-native';
|
|
import {GooglePlacesAutocomplete} from 'react-native-google-places-autocomplete';
|
|
import MapView, {Callout, Circle, Marker} from 'react-native-maps';
|
|
|
|
export default function HouseLocation() {
|
|
const [pin, setPin] = React.useState({
|
|
latitude: 37.78825,
|
|
longitude: -122.4324,
|
|
});
|
|
const [region, setRegion] = React.useState({
|
|
latitude: 37.78825,
|
|
longitude: -122.4324,
|
|
latitudeDelta: 0.0922,
|
|
longitudeDelta: 0.0421,
|
|
});
|
|
|
|
return (
|
|
<View style={{marginTop: 50, flex: 1}}>
|
|
<GooglePlacesAutocomplete
|
|
placeholder="Search"
|
|
fetchDetails={true}
|
|
GooglePlacesSearchQuery={{
|
|
rankby: 'distance',
|
|
}}
|
|
onPress={(data, details = null) => {
|
|
// 'details' is provided when fetchDetails = true
|
|
console.log(data, details);
|
|
setRegion({
|
|
latitude: details.geometry.location.lat,
|
|
longitude: details.geometry.location.lng,
|
|
latitudeDelta: 0.0922,
|
|
longitudeDelta: 0.0421,
|
|
});
|
|
}}
|
|
query={{
|
|
key: 'AIzaSyCkyKVuTyTW8qIcmXuo-btO4lI0VzojzBE',
|
|
language: 'en',
|
|
components: 'country:in',
|
|
types: 'establishment',
|
|
radius: 30000,
|
|
location: `${region.latitude}, ${region.longitude}`,
|
|
}}
|
|
placeholderTextColor={'#845783'}
|
|
styles={{
|
|
container: {
|
|
flex: 0,
|
|
position: 'absolute',
|
|
width: '100%',
|
|
zIndex: 1,
|
|
backgroundColor: '#000000',
|
|
},
|
|
listView: {backgroundColor: 'white', color: 'blue'},
|
|
}}
|
|
/>
|
|
<MapView
|
|
style={styles.map}
|
|
initialRegion={{
|
|
latitude: 37.78825,
|
|
longitude: -122.4324,
|
|
latitudeDelta: 0.0922,
|
|
longitudeDelta: 0.0421,
|
|
}}
|
|
provider="google">
|
|
<Marker
|
|
coordinate={{
|
|
latitude: region.latitude,
|
|
longitude: region.longitude,
|
|
}}
|
|
/>
|
|
<Marker
|
|
coordinate={pin}
|
|
pinColor="black"
|
|
draggable={true}
|
|
onDragStart={e => {
|
|
console.log('Drag start', e.nativeEvent.coordinates);
|
|
}}
|
|
onDragEnd={e => {
|
|
setPin({
|
|
latitude: e.nativeEvent.coordinate.latitude,
|
|
longitude: e.nativeEvent.coordinate.longitude,
|
|
});
|
|
}}>
|
|
<Callout>
|
|
<Text>I'm here</Text>
|
|
</Callout>
|
|
</Marker>
|
|
</MapView>
|
|
</View>
|
|
);
|
|
}
|
|
|
|
const styles = StyleSheet.create({
|
|
container: {
|
|
flex: 1,
|
|
backgroundColor: '#fff',
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
},
|
|
map: {
|
|
width: Dimensions.get('window').width,
|
|
height: Dimensions.get('window').height,
|
|
},
|
|
});
|