如何在不使用谷歌 Map 的情况下获取特定城市或街道或位置的纬度和经度?例如,用户输入的城市名称是“Chennai”,我只需要显示该城市的纬度和经度 . 这该怎么做?
在维基百科页面查看Obtaining geographic coordinates
这称为地理编码,需要将地名与纬度和经度相匹配 .
您可以将已知的地名/纬度列表编码到您的应用程序中,在运行时读取它们并在需要时搜索它们,或者您可以使用在线地理编码服务,例如this one from Yahoo或this one from Google .
Google提供反向地理编码 - 请通过this链接
另外例如下面的web服务给出了参数中提供的lat long的地址,但是hte的响应是在json中,参见this link
如果你想在xml中获得响应,请检查here
我遇到了同样的问题..最后我通过从服务器端获取lat long来修复它 . This link包含从java获取lat和long的示例代码 . 希望它有所帮助 .
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; }
4 回答
在维基百科页面查看Obtaining geographic coordinates
这称为地理编码,需要将地名与纬度和经度相匹配 .
您可以将已知的地名/纬度列表编码到您的应用程序中,在运行时读取它们并在需要时搜索它们,或者您可以使用在线地理编码服务,例如this one from Yahoo或this one from Google .
Google提供反向地理编码 - 请通过this链接
另外例如下面的web服务给出了参数中提供的lat long的地址,但是hte的响应是在json中,参见this link
如果你想在xml中获得响应,请检查here
我遇到了同样的问题..最后我通过从服务器端获取lat long来修复它 . This link包含从java获取lat和long的示例代码 . 希望它有所帮助 .