react-native-geocoder
geocoding services for react native
Version table
Geocoder Version | RN |
---|---|
>=0.4.6 | >= 0.40.0 |
<0.4.5 | <0.40.0 |
Install
npm install --save react-native-geocoder
iOS
- In the XCode's "Project navigator", right click on Libraries folder under your project ➜
Add Files to <...>
- Go to
node_modules
➜react-native-geocoder
and addios/RNGeocoder.xcodeproj
file - Add libRNGeocoder.a to "Build Phases" -> "Link Binary With Libraries"
Android
- In
android/setting.gradle
...include ':react-native-geocoder', ':app'project(':react-native-geocoder').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-geocoder/android')
- In
android/app/build.gradle
...dependencies { ... compile project(':react-native-geocoder')}
- register module (in MainApplication.java)
// <--- import
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
;// simply add your google keyGeocoder; // use the lib as usuallet ret = await Geocoder// 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:
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.