简体   繁体   中英

Android Geocoder - different results when called from different geographical locations

I have the following code in my Android program

List<Address> addressList = geoCoder.getFromLocation(37.790551,-122.433931, 1);
if (!addressList.isEmpty()) {
            address = addressList.get(0);
            String number = address.getSubThoroughfare();
            String streetName = address.getThoroughfare();
.....
}

This is a request to essentially get a street name (hence the 1 ) from a latitude and longitude in San Francisco.

When I execute this program on a phone in Europe (specifically Ireland) number is returned as 2250-2290 and streetname is returned as Fillmore St .

When I get a friend to run the same code on his phone in California number is null and streetname is still Fillmore st .

I've seen other SO questions allude to region settings but is this possible that the geographical location can affect the query in the Android API?

The Javascript Geocoding API mentions region bias. I wonder is it possible to do something similar in the Android API. I did try creating the Geocoder as

Geocoder geoCoder = new Geocoder(getApplicationContext(), Locale.US);

but this does not re-recreate the California based result.

From getting people to run identical code on different continents it seems that location is indeed a factor. The Javascript geocoding allows you to specify a region though

Are the phones running different versions of android? Also, another thing to keep in mind is that "The Geocoder class requires a backend service that is not included in the core android framework." So, if the two phones are calling upon different backend services to query for the Geocoder, that may explain the output you are seeing.

I think with Android 1.5, they included a Google API backend service implementation for Geocoder. I don't know if newer versions of Android and the Google API made changes to the Geocoder implementation that may be giving you different results or it's coming from some other backend service.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM