How to get Latitude and Longitude for particular city or street or location without using google map? For example user entered city name is "Chennai" and i need to show only Latitude and Longitude for that city. How to do this?
How to get Latitude and Longitude for particular city or street without using google map?
Asked Answered
This is called Geocoding, and requires matching a place name up to a latitude and longitude.
You can either code a known list of place name/lat-lons into your app, read them in at runtime and search through them when required, or you can use an online Geocoding service such as this one from Yahoo, or this one from Google.
check Obtaining geographic coordinates at Wikipedia page
I had the same problem.. Finally I fixed it by getting the lat long from the server side. This link has the sample code for getting lat and long from java. Hope it helps some one.
private static final String GEOCODE_REQUEST_URL = "http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&";
private static HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager());
String strLatitude;
String strLongtitude;
public void getLongitudeLatitude(String address) {
try {
StringBuilder urlBuilder = new StringBuilder(GEOCODE_REQUEST_URL);
if (StringUtils.isNotBlank(address)) {
urlBuilder.append("&address=").append(URLEncoder.encode(address, "UTF-8"));
}
final GetMethod getMethod = new GetMethod(urlBuilder.toString());
try {
httpClient.executeMethod(getMethod);
Reader reader = new InputStreamReader(getMethod.getResponseBodyAsStream(), getMethod.getResponseCharSet());
int data = reader.read();
char[] buffer = new char[1024];
Writer writer = new StringWriter();
while ((data = reader.read(buffer)) != -1) {
writer.write(buffer, 0, data);
}
String result = writer.toString();
System.out.println(result.toString());
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader("<"+writer.toString().trim()));
Document doc = db.parse(is);
strLatitude = getXpathValue(doc, "//GeocodeResponse/result/geometry/location/lat/text()");
System.out.println("Latitude:" + strLatitude);
strLongtitude = getXpathValue(doc,"//GeocodeResponse/result/geometry/location/lng/text()");
System.out.println("Longitude:" + strLongtitude);
} finally {
getMethod.releaseConnection();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private String getXpathValue(Document doc, String strXpath) throws XPathExpressionException {
XPath xPath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xPath.compile(strXpath);
String resultData = null;
Object result4 = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result4;
for (int i = 0; i < nodes.getLength(); i++) {
resultData = nodes.item(i).getNodeValue();
}
return resultData;
}
© 2022 - 2024 — McMap. All rights reserved.