How to get Latitude and Longitude for particular city or street without using google map?

随声附和 提交于 2019-12-09 12:04:22

问题


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?


回答1:


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.




回答2:


check Obtaining geographic coordinates at Wikipedia page




回答3:


Google provides reverse geocoding - please go through this link

also for example below web service gives you the address of lat long provided in the parameter but hte response is in json, see this link

if you want to get response in xml then check here




回答4:


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;


    }


来源:https://stackoverflow.com/questions/5270037/how-to-get-latitude-and-longitude-for-particular-city-or-street-without-using-go

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!