react-native-geocoder-reborn
Geocoding services for react native.
The project is built on top of devfd/react-native-geocoder, due to original project is not likely being maintained. This fork should be a drop-in replacement. Some bug fixing and TypeScript support have being added.
Version table
Geocoder Version | RN |
---|---|
>=0.7.0 | >= 0.56.0 |
If you're using an older version of react-native, please consider using devfd/react-native-geocoder instead.
Install
yarn add react-native-geocoder-reborn
or
npm install --save react-native-geocoder-reborn
Link
react-native-cli
(requires react-native
0.60 or above)
Autolinking with cd ios && pod install && cd .. # CocoaPods on iOS needs this extra step # run with react-native-cli react-native run-iosreact-native run-android
Please review autolinking docs for detials.
If "Autolinking" is not available for you, please try the following:
Use `react-native link`
react-native link react-native-geocoder-reborn
Manually
If automatic linking fails you can follow the manual installation stepsiOS
- In the XCode's "Project navigator", right click on Libraries folder under your project ➜
Add Files to <...>
- Go to
node_modules
➜react-native-geocoder-reborn
and addios/RNGeocoder.xcodeproj
file - Add libRNGeocoder.a to "Build Phases" -> "Link Binary With Libraries"
Android
- In
android/setting.gradle
add:
...include ':react-native-geocoder-reborn', ':app'project(':react-native-geocoder-reborn').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-geocoder-reborn/android')
- In
android/app/build.gradle
...dependencies { ... implementation project(':react-native-geocoder-reborn')}
- register module (in MainApplication.java)
// <--- import
Usage
; // Position Geocodingvar NY = lat: 407809261 lng: -739637594; Geocoder // Address GeocodingGeocoder
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 maps keyGeocoder;// Add next line if you also want to use Google Maps api on iOS.Geocode; // use the lib as usuallet res = await Geocoder// you get the same results
With language preference
;// Set language attribute before api calls.Geocoder; // Set language to French. let res = await Geocoder;
Note: Platforms may have different implantations for locale preference. Here is Google Maps API supported language list.
With async / await
; try ... await Geocoder; ... await Geocoder; ... catcherr console;
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
Known Issues
iOS
iOS does not allow sending multiple geocoding requests simultaneously, hence if you send a second call, the first one will be cancelled.