6

グーグルマップを使用せずに特定の都市、通り、または場所の緯度と経度を取得するにはどうすればよいですか?たとえば、ユーザーが入力した都市名は「Chennai」であり、その都市の緯度と経度のみを表示する必要があります。これを行う方法?

4

4 に答える 4

10

これはジオコーディングと呼ばれ、緯度と経度まで地名を一致させる必要があります。

場所名/緯度経度の既知のリストをアプリにコーディングし、実行時に読み込み、必要に応じて検索するか、YahooのこのサービスやGoogleのこのサービスなどのオンライン ジオコーディング サービスを使用することができます。 .

于 2011-03-11T09:44:52.417 に答える
2

ウィキペディアのページで地理座標を取得するを確認してください

于 2011-03-11T07:21:20.100 に答える
2

Google はリバース ジオコーディングを提供しています -このリンクにアクセスしてください

また、たとえば以下の Web サービスは、パラメーターで提供される緯度経度のアドレスを提供しますが、hte 応答は json です。このリンクを参照してください。

xml で応答を取得する場合は、ここを確認してください

于 2011-05-04T10:46:55.557 に答える
1

同じ問題が発生しました。最後に、サーバー側から緯度を長くして修正しました。 このリンクには、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;


    }
于 2012-05-04T09:17:30.543 に答える