react-native-places-input
v1.1.7
Published
Up to date working Google Places Input. Calling directly API not JS SDK.
Downloads
988
Maintainers
Readme
React Native Places Input
Up to date working Google Places Input. Calling directly API not JS SDK.
Latest changes
1.1.6
Component is now fetching places if query prop is provided.
1.1.5
If query prop change it will also update a component state. New configuration props:
- clearQueryOnSelect - Clear input query on place select
1.1.4
Adding loading indicator for a place details request.
1.1.3
New configuration props:
- query - Custom query value for a text field
Installation
yarn add react-native-places-input
or
npm install react-native-places-input
Usage
Fairly easy. Few required props but most of the work is already done in a component.
Basic
import PlacesInput from 'react-native-places-input';
And inside a component
<PlacesInput
googleApiKey={GOOGLE_API_KEY}
onSelect={place => console.log(place)}
/>
class InputWrapper extends React.Component {
render() {
return (
<View style={{ width: '100%' }}>
<PlacesInput
googleApiKey={GOOGLE_API_KEY}
placeHolder={"Some Place holder"}
language={"en-US"}
onSelect={place => {
this.props.goToPoint(get(place, 'result.geometry.location.lat'), get(place, 'result.geometry.location.lng'))
}}
iconResult={<Ionicons name="md-pin" size={25} style={styles.placeIcon}/>}
/>
</View>
);
}
}
Configuration props
List of props supported by a component
Prop | Type | Default | Description ---------- | ------- | ---------- | ----------------------- googleApiKey | PropTypes.string.isRequired | | Google API key clearQueryOnSelect | bool | false | Clear input query on place select iconInput | any | | Icon added to an input iconResult | any | | Icon added to results language | string | en | Language for google API call placeHolder | string | Search places... | placeholder for an input query | string | | Custom text field value on init querySession | string | | A random string which identifies an autocomplete session for billing purposes. If this parameter is omitted from an autocomplete request, the request is billed independently. See the pricing sheet for details. queryTypes | string | | You may restrict results from a Place Autocomplete request to be of a certain type by passing a types parameter. Google docs queryFields | string | formatted_address,geometry,name | Fields requested from Google API queryCountries | array | | Array of country codes to limit results resultRender | func | place => place.description | Function to render results text searchLatitude | number | | Lat to limit results searchLongitude | number | | Lng to limit results searchRadius | number | | radius to limit results stylesContainer | object | {} | Custom styles for a container stylesInput | object | {} | Custom styles for an input stylesItem | object | {} | Custom styles for an item stylesItemText | object | {} | Custom styles for an item text stylesList | object | {} | Custom styles for a list stylesLoading | object,| {} | Custom styles for a loading indicator textInputProps | object | {} | Custom TextInput props requiredCharactersBeforeSearch | number | 2 | Component wont fetch places unless string length is equal this prop requiredTimeBeforeSearch | number | 1000 | Idle time on text input before component will fetch places onSelect | func | | Function called when you select a place onChangeText | func | | Method triggered when TextInput is changed. Returning query and this.
Examples
Inline
<PlacesInput
placeHolder={'Some placeholder'}
stylesContainer={{
position: 'relative',
alignSelf: 'stretch',
margin: 0,
top: 0,
left: 0,
right: 0,
bottom: 0,
shadowOpacity: 0,
borderColor: '#dedede',
borderWidth: 1,
marginBottom: 10
}}
stylesList={{
top: 50,
borderColor: '#dedede',
borderLeftWidth: 1,
borderRightWidth: 1,
borderBottomWidth: 1,
left: -1,
right: -1
}}
googleApiKey={GOOGLE_API_KEY}
onSelect={place => this.setState({place})}
/>
Limit results to a country
<PlacesInput
placeHolder={'Some placeholder'}
queryCountries={['pl', 'fr']}
googleApiKey={GOOGLE_API_KEY}
onSelect={place => this.setState({place})}
/>
Limit results to a location
<PlacesInput
placeHolder={'Some placeholder'}
searchRadius={500}
searchLatitude={51.905070}
searchLongitude={19.458834}
googleApiKey={GOOGLE_API_KEY}
onSelect={place => this.setState({place})}
/>
Place types
<PlacesInput
placeHolder={'Some placeholder'}
queryTypes="establishment"
googleApiKey={GOOGLE_API_KEY}
onSelect={place => this.setState({place})}
/>
Common issues
If on click is not working and component is inside a ScrollView make sure to add keyboardShouldPersistTaps = always.
<ScrollView
keyboardShouldPersistTaps="always"