Skip to content

Imaginnovate/react-native-places-input

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

React Native Places Input

Up to date working Google Places Input. Calling directly API not JS SDK.

exmaples

Latest changes

1.1.7

Fixing UID for a place

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

exmaples

    <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"

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%