UNPKG

react-native-place-picker

Version:
194 lines (155 loc) β€’ 9.83 kB
<p align="center"> <a href="https://badge.fury.io/js/react-native-place-picker"> <img alt="NPM Version" src="https://badge.fury.io/js/react-native-place-picker.svg" /> </a> <a href="https://github.com/b0iq/react-native-place-picker/actions"> <img alt="Tests Passing" src="https://github.com/anuraghazra/github-readme-stats/workflows/Test/badge.svg" /> </a> <a href="https://github.com/anuraghazra/github-readme-stats/graphs/contributors"> <img alt="GitHub Contributors" src="https://img.shields.io/github/contributors/b0iq/react-native-place-picker" /> </a> <a href="https://codecov.io/gh/b0iq/react-native-place-picker"> <img src="https://codecov.io/gh/b0iq/react-native-place-picker/branch/master/graph/badge.svg" /> </a> <a href="https://github.com/b0iq/react-native-place-picker/issues"> <img alt="Issues" src="https://img.shields.io/github/issues/b0iq/react-native-place-picker?color=0088ff" /> </a> <a href="https://github.com/b0iq/react-native-place-picker/pulls"> <img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr/b0iq/react-native-place-picker?color=0088ff" /> </a> <br /> <br /> </p> ### Features - [x] 🎨 Theme customization. - [x] πŸ“± UI written natively. - [x] πŸ—ΊοΈ Location reverse-geocoding (coordinate -> address). - [x] πŸ” Searchable (users can search for location). - [x] πŸ“ Device location. - [x] βš™οΈ Fully configurable. - [x] πŸ—οΈ Supporting Turbo Modules (New Arch) with backward compatibility. - [x] ⚑ Renders on top of the app (Blazing Fast). - [x] πŸ“ Well typed. - [x] πŸ“¦ Significantly small package. - [x] πŸ”— No peer dependencies except React and React-Native <sup>[[1]](#extra)</sup>. ### How is it working? > This plugin is built only by create native page `UIViewController` for iOS or `Activity` for Android. and present the page in front of React Native Application without any special dependencies just native code ## Installation ```sh npm install react-native-place-picker # or yarn add react-native-place-picker # or pnpm add react-native-place-picker # or bun add react-native-place-picker ``` ### Expo - You need to add `expo-dev-client` and run `expo run:ios` or `expo run:android` > **Info** Expo managed app not supported 🚧 ### iOS - If you want to enable user current location button you have to add this to your `Info.plist` ```xml <key>NSLocationWhenInUseUsageDescription</key> <string>YOUR_PURPOSE_HERE</string> ``` ### Android ⚠️ - Add to your `AndroidManifest.xml` you Google Map API Key or your application will crash ```xml <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_KEY" /> ``` ### Request ```js import { pickPlace } from "react-native-place-picker"; pickPlace({ enableUserLocation: true, enableGeocoding: true, color: "#FF00FF", // Range selection (optional) enableRangeSelection: true, initialRadius: 2000, minRadius: 250, maxRadius: 10000, radiusColor: '#FF00FF33', radiusStrokeColor: '#FF00FF', radiusStrokeWidth: 2, //...etc }) .then(console.log) .catch(console.log); // or pickPlace().then(console.log).catch(console.log); ``` ### Result ```ts { /** * @description Selected coordinate. */ coordinate: PlacePickerCoordinate; /** * @description Geocoded address for selected location. * @if `enableGeocoding: true` */ address?: PlacePickerAddress; /** * @description Did cancel the place picker window without selecting. */ didCancel: boolean; } ``` ### PlacePickerOptions | Property | Type | Description | Default | | -------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------- | | `presentationStyle` | `PlacePickerPresentationStyle` \| string | Presentation style of the place picker window. **iOS only** | `'fullscreen'` | | `title` | `string` | The title of the place picker window. | `'Choose Place'` | | `searchPlaceholder` | `string` | Placeholder for the search bar in the place picker window. | `'Search...'` | | `color` | `string` | Primary color of the theme (map pin, shadow, etc.). | `'#FF0000'` | | `contrastColor` | `string` | Contrast color for the primary color. | `'#FFFFFF'` | | `locale` | `string` | Locale for the returned address. | `'en-US'` | | `initialCoordinates` | `PlacePickerCoordinate` | Initial map position. | `{ latitude: 25.2048, longitude: 55.2708 }` | | `enableGeocoding` | `boolean` | geocoding for the selected address. | `true` | | `enableSearch` | `boolean` | search bar for searching specific positions. | `true` | | `enableUserLocation` | `boolean` | current user position button. Requires setup. | `true` | | `enableLargeTitle` | `boolean` | large navigation bar title of the UIViewController. **iOS only** | `true` | | `rejectOnCancel` | `boolean` | Reject and return nothing if the user dismisses the window without selecting a place. | `true` | | `enableRangeSelection` | `boolean` | Enable draggable radius selection overlay. | `false` | | `initialRadius` | `number` | Initial radius in meters when range selection is enabled. | `1000` | | `minRadius` | `number` | Minimum allowed radius in meters. | `100` | | `maxRadius` | `number` | Maximum allowed radius in meters. | `10000` | | `radiusColor` | `string` | Fill color of radius circle (falls back to `color` with alpha). | `''` | | `radiusStrokeColor` | `string` | Stroke color of radius circle (falls back to `color`). | `''` | | `radiusStrokeWidth` | `number` | Stroke width of radius circle in pixels. | `2` | ### PlacePickerPresentationStyle | Enum Value | Description | | ------------ | -------------------------------------- | | `modal` | Presentation style as a modal window. | | `fullscreen` | Presentation style in fullscreen mode. | ### PlacePickerAddress | Property | Type | Description | | ------------ | -------- | --------------------------- | | `name` | `string` | Name of the location. | | `streetName` | `string` | Street name of the address. | | `city` | `string` | City of the address. | | `state` | `string` | State of the address. | | `zipCode` | `string` | Zip code of the address. | | `country` | `string` | Country of the address. | ### PlacePickerCoordinate | Property | Type | Description | | ----------- | -------- | -------------------------- | | `latitude` | `number` | Latitude of the location. | | `longitude` | `number` | Longitude of the location. | ### PlacePickerResults | Property | Type | Description | | ------------ | ----------------------- | -------------------------------------------------------------- | | `coordinate` | `PlacePickerCoordinate` | Selected coordinate. | | `address` | `PlacePickerAddress` | Geocoded address for selected location (if `enableGeocoding`). | | `didCancel` | `boolean` | Indicates if the place picker was canceled without selecting. | | `radius` | `number` | Selected radius in meters (if range selection enabled). | | `radiusCoordinates` | `{ center, bounds }` | Center and bounds of the selected area. | ## Contributing See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow. ## License MIT