In my app i am using osm rather than google map.I have latitude and longitude.So from here how i will query to get the city name from osm database..plz help me.I am using osmdroid-android-3.0.8.is there any extra library i have to download for this?
This can be done through Reverse Geocoding, where you convert a Latitude/Longitude point into a human readable address. Typically, reverse geocoding is done as a web-request.
In your case, Open Street Maps has a reverse geocoding API where you can make requests to their web service and then consume the xml/json response to get the city name.
Making reverse geocode request to the osm web service would look something like this:
http://nominatim.openstreetmap.org/reverse?format=xml&lat=[LATITUDE]&lon=[LONGITUDE]&zoom=18&addressdetails=1
Where:
This will give you a result that looks something like so:
<reversegeocode timestamp="Fri, 06 Nov 09 16:33:54 +0000" querystring="...">
<result place_id="1620612" osm_type="node" osm_id="452010817">
135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom
</result>
<addressparts>
<house>135</house>
<road>Pilkington Avenue</road>
<village>Wylde Green</village>
<town>Sutton Coldfield</town>
<city>City of Birmingham</city>
<county>West Midlands (county)</county>
<postcode>B72</postcode>
<country>United Kingdom</country>
<country_code>gb</country_code>
</addressparts>
</reversegeocode>
You can then process the result as an xml document to find the city name node.
An alternative is to use Google's Geolocation API.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With