Skip to content

easybroker/react-native-reverse-geocode

 
 

Repository files navigation

@kiwicom/react-native-reverse-geocode

Thin wrapper over MapKit's MKLocalSearch and Geocoder's getFromLocationName.

Disclaimer

This is still a work in progress and is suited to one specific usecase.

Getting started

$ npm install @kiwicom/react-native-reverse-geocode --save

Mostly automatic installation

$ react-native link @kiwicom/react-native-reverse-geocode

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modules@kiwicom/react-native-reverse-geocode and add RNReverseGeocode.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNReverseGeocode.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainApplication.java
  • Add import com.kiwi.reversegeocode.RNReverseGeocodePackage; to the imports at the top of the file
  • Add new RNReverseGeocodePackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':@kiwicom/react-native-reverse-geocode'
    project(':@kiwicom/react-native-reverse-geocode').projectDir = new File(rootProject.projectDir, 	'../node_modules/@kiwicom/react-native-reverse-geocode/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':@kiwicom/react-native-reverse-geocode')
    

Methods usage

searchForLocations()

import RNReverseGeocode from "@kiwicom/react-native-reverse-geocode";

const region = {
  latitude: 50,
  longitude: 14,
  latitudeDelta: 0.01,
  longitudeDelta: 0.01
};

const searchText = "Charles";

RNReverseGeocode.searchForLocations(
  this.props.searchText,
  this.props.region,
  (err, res) => {
    console.log({
      error: err,
      addresses: res
    });
  }
);

and you should get similar results (on iOS):

{
  error: null,
  addresses: [
    {
      name: "Prague Bridge",
      location: {longitude: 14.411334693431856, latitude: 50.08649403063166},
      address: "Charles Bridge, Karlův most, 118 00 Prague, Czech Republic"
    },
    {
      name: "Sheraton Prague Charles Square Hotel",
      location: {longitude: 14.422428309917, latitude: 50.077311685646},
      address: "Žitná 561/8, 120 00 Prague, Czech Republic"
    },
    {
      name: "Charles Bridge Palace",
      location: {longitude: 14.415033459663391, latitude: 50.08505182184114},
      address: "Anenské náměstí 1, 110 00 Praha, Česká republika"
    },
    {
      name: "Charles University",
      location:  {longitude: 14.420802368359185, latitude: 50.0843581717817},
      address: "Opletalova 26, 110 00 Prague, Czech Republic"
    },
    {
      name: "Hotel Charles Central",
      location: {longitude: 14.4520895183086, latitude: 50.0933086545776},
      address: "Thámova 117/26, 186 00 Prague, Czech Republic"
    },
    {
      name: "Moods Charles Bridge",
      location: {longitude: 14.414653540861101, latitude: 50.084306327469044},
      address: "Náprstkova 6, 110 00 Prague, Czech Republic"
    },
    {
      name: "Charles",
      location: {longitude: 14.405249099444005, latitude: 50.08762292985475},
      address: "Josefská 1, 118 00 Prague, Czech Republic"
    },
    {
      name: "Archibald At the Charles Bridge",
      location:  {longitude: 14.408739869235935, latitude: 50.085910196031264},
      address: "Na Kampě 15, 118 00 Prague, Czech Republic"
    },
    {
      name: "Charles Bridge Restaurant",
      location: {longitude: 14.413779917788725, latitude: 50.08589906996886},
      address: "Smetanovo nábřeží 195, 110 00 Prague, Czech Republic"
    },
    {
      name: "Muzeum Karlova mostu",
      location: {longitude: 14.413869380950928, latitude: 50.08649403063166},
      address: "Křižovnické náměstí 3, 110 00 Prague, Czech Republic"
    }
  ]
}

isPresent()

Android

Returns true if the Geocoder methods getFromLocation and getFromLocationName are implemented. Lack of network connectivity may still cause these methods to return null or empty lists.

import RNReverseGeocode from "@kiwicom/react-native-reverse-geocode";

RNReverseGeocode.isPresent(
  (res) => {
   console.log(res); // returns true if available
 });
iOS

Usage is the same but you will always get true since this method is only available in Android and we can imply that geocoding implementation will always be available in iOS.

License

See License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 37.7%
  • Kotlin 35.6%
  • Objective-C 21.8%
  • Ruby 4.9%