devfd / react-native-geocoder

geocoding services for react native
MIT License
429 stars 178 forks source link

get the locality of the place #79

Open bbeckk opened 6 years ago

bbeckk commented 6 years ago

Why does it gives 10 outcomes in the following code? How can I get the city name only? I've tested in android devices.

    var NY = {
      lat: 40.7809261,
      lng: -73.9637594,
    };

    export default class App extends Component<Props> {

      currentArea = () => {
        Geocoder.geocodePosition(NY).then(res => {
            console.log('position', res);
        })
        .catch(err => console.log(err))
      }
      render() {
        return (
          <View>
            <TouchableOpacity
              onPress={() => this.currentArea()}
            >
              <Text>Get current location</Text>
            </TouchableOpacity>
          </View>
        );
      }
    }

Debugged value:

position 
(10) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0
:
{streetName: "East Drive", feature: null, locale: "en_GB", locality: "New York", position: {…}, …}
1
:
{streetName: null, feature: "Central Park", locale: "en_GB", locality: "New York", position: {…}, …}
2
:
{streetName: null, feature: "Manhattan", locale: "en_GB", locality: "New York", position: {…}, …}
3
:
{streetName: null, feature: null, locale: "en_GB", locality: "New York", position: {…}, …}
4
:
{streetName: null, feature: "10028", locale: "en_GB", locality: "New York", position: {…}, …}
5
:
{streetName: null, feature: "New York County", locale: "en_GB", locality: "New York", position: {…}, …}
6
:
{streetName: null, feature: "New York-Northern New Jersey-Long Island, NY-NJ-PA", locale: "en_GB", locality: null, position: {…}, …}
7
:
{streetName: null, feature: "New York Metropolitan Area", locale: "en_GB", locality: null, position: {…}, …}
8
:
{streetName: null, feature: "New York", locale: "en_GB", locality: null, position: {…}, …}
9
:
{streetName: null, feature: "United States", locale: "en_GB", locality: null, position: {…}, …}
length
:
10
__proto__
:
Array(0)
bkspace commented 6 years ago

For Android - this library uses Geocoder under the hood.

Returns an array of Addresses that are known to describe the area immediately surrounding the given latitude and longitude.

You could useres[0].country for example.

bbeckk commented 6 years ago

Thankyou.. @bkspace I just wonder why it gives an array with 10 different objects?

bkspace commented 6 years ago

I don’t think I know the exact answer to that - other than geocoding is hard and the backend services will try and ‘estimate’ your location