Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/devfd/react-native-geocoder
geocoding services for react native
https://github.com/devfd/react-native-geocoder
Last synced: 6 days ago
JSON representation
geocoding services for react native
- Host: GitHub
- URL: https://github.com/devfd/react-native-geocoder
- Owner: devfd
- License: mit
- Archived: true
- Created: 2015-06-19T07:04:21.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-10-22T07:19:37.000Z (about 4 years ago)
- Last Synced: 2024-11-29T01:38:53.426Z (14 days ago)
- Language: JavaScript
- Size: 66.4 KB
- Stars: 429
- Watchers: 10
- Forks: 180
- Open Issues: 57
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-react-native - react-native-geocoder ★344 - react native geocoding and reverse geocoding (Components / Geolocation)
- awesome-react-native - react-native-geocoder ★344 - react native geocoding and reverse geocoding (Components / Geolocation)
- awesome-react-native - react-native-geocoder ★344 - react native geocoding and reverse geocoding (Components / Geolocation)
- awesome-react-native - react-native-geocoder ★344 - react native geocoding and reverse geocoding (Components / Geolocation)
- awesome-react-native-ui - react-native-geocoder ★152 - react native geocoding and reverse geocoding (Components / System)
README
# react-native-geocoder
[![CircleCI](https://circleci.com/gh/devfd/react-native-geocoder/tree/master.svg?style=shield)](https://circleci.com/gh/devfd/react-native-geocoder/tree/master)
geocoding services for react native
## Version table
| Geocoder Version | RN |
| ------- |:----------|
| >=0.5.0 | >= 0.47.0 |
| >=0.4.6 | >= 0.40.0 |
| <0.4.5 | <0.40.0 |## Install
```
npm install --save react-native-geocoder
```
## iOS1. In the XCode's "Project navigator", right click on Libraries folder under your project ➜ `Add Files to <...>`
2. Go to `node_modules` ➜ `react-native-geocoder` and add `ios/RNGeocoder.xcodeproj` file
3. Add libRNGeocoder.a to "Build Phases" -> "Link Binary With Libraries"## Android
1. In `android/setting.gradle````gradle
...
include ':react-native-geocoder', ':app'
project(':react-native-geocoder').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-geocoder/android')
```3. In `android/app/build.gradle`
```gradle
...
dependencies {
...
compile project(':react-native-geocoder')
}
```4. register module (in MainApplication.java)
```java
import com.devfd.RNGeocoder.RNGeocoderPackage; // <--- importpublic class MainActivity extends ReactActivity {
......@Override
protected List getPackages() {
return Arrays.asList(
new MainReactPackage(),
new RNGeocoderPackage()); // <------ add this
}......
}
```
## Usage
```
import Geocoder from 'react-native-geocoder';// Position Geocoding
var NY = {
lat: 40.7809261,
lng: -73.9637594
};Geocoder.geocodePosition(NY).then(res => {
// res is an Array of geocoding object (see below)
})
.catch(err => console.log(err))// Address Geocoding
Geocoder.geocodeAddress('New York').then(res => {
// res is an Array of geocoding object (see below)
})
.catch(err => console.log(err))
```## Fallback to google maps geocoding
Geocoding services might not be included in some Android devices (Kindle, some 4.1 devices, non-google devices). For those special cases the lib can fallback to the [online google maps geocoding service](https://developers.google.com/maps/documentation/geocoding/intro#Geocoding)
```js
import Geocoder from 'react-native-geocoder';
// simply add your google key
Geocoder.fallbackToGoogle(MY_KEY);// use the lib as usual
let ret = await Geocoder.geocodePosition({lat, lng})
// you get the same results```
## With async / await
```
try {const res = await Geocoder.geocodePosition(NY);
...const res = await Geocoder.geocodeAddress('London');
...
}
catch(err) {
console.log(err);
}
```## Geocoding object format
both iOS and Android will return the following object:```js
{
position: {lat, lng},
formattedAddress: String, // the full address
feature: String | null, // ex Yosemite Park, Eiffel Tower
streetNumber: String | null,
streetName: String | null,
postalCode: String | null,
locality: String | null, // city name
country: String,
countryCode: String
adminArea: String | null
subAdminArea: String | null,
subLocality: String | null
}
```## Notes
### iOS
iOS does not allow sending multiple geocoding requests simultaneously, hence if you send a second call, the first one will be cancelled.### Android
geocoding may not work on older android devices (4.1) and will not work if Google play services are not available.