3

我从 GPS 设备获得了一定的纬度和经度。我必须知道那个地方的地址。我如何在java中做到这一点。当我知道纬度和经度时,谷歌在 java 中是否提供任何 API 来知道地址?

4

2 回答 2

3

在以下示例中,包含两个主要概念。

  1. Web 服务客户端(反向地理编码)
  2. JSON

Web 服务客户端用于从提供一些 Web 服务的另一台服务器访问资源

使用此服务,您可以获得纬度、经度的地址使用

谷歌正在提供免费的网络服务客户端 URI 即

"https://maps.googleapis.com/maps/api/geocode/json?latlng=<LATITUDE>,<LONGITUDE> &key=<ENTER YOUR PLACE API KEY HEAR>

使用该服务您可以从 Google place API 获取 JSON 格式的所有类型的地址

在您可以从 JSON 数据中找到所需的对象和值之后

我从那个 JSON 数据中给你 formatted_address

有以下代码使用纬度,经度获取位置地址

package clientpkg;

import java.net.URI;
import javax.ws.rs.client.Client;  
import javax.ws.rs.client.ClientBuilder;  
import javax.ws.rs.client.WebTarget;  
import javax.ws.rs.core.MediaType;  
import javax.ws.rs.core.UriBuilder;  
import org.glassfish.jersey.client.ClientConfig;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class MapAdd
{
    public static void main(String...aa)
    {
        try
        {
            System.out.println("Finding Address...\n");
            ClientConfig config = new ClientConfig();
            Client client = ClientBuilder.newClient(config);
            WebTarget target = client.target(getBaseURI());

            String jsonaddresss =  target.request().accept(MediaType.APPLICATION_JSON).get(String.class);

            String address = adres(jsonaddresss);


            System.out.println("Perfect Address is : >>"+address);

        }
        catch(Exception e)
        {
            System.out.println("Error"+e);
        }
    }

    private static URI getBaseURI()
    {
        return UriBuilder.fromUri("https://maps.googleapis.com/maps/api/geocode/json?latlng=32.263200,50.778187&key=<ENTER YOUR PLACE API KEY HEAR >").build();
    }
    private static String adres(String jsonaddresss)
    {
        try
        {
            JSONParser parser = new JSONParser();

            Object obj = parser.parse(jsonaddresss);
            JSONObject jsonObject = (JSONObject) obj;

            JSONArray msg = (JSONArray) jsonObject.get("results");

            //System.out.println("Message"+msg.get(1)); //Get Second Line Of Result

            JSONObject jobj = (JSONObject) parser.parse(msg.get(1).toString()); // Parsse it 

            String perfect_address = jobj.get("formatted_address").toString();

            jsonaddresss = perfect_address;
        }
        catch(Exception e)
        {
            jsonaddresss = "Error In Address"+e;
        }
        return jsonaddresss;
    }
}
于 2017-05-21T11:55:52.240 回答
2

Google 的地理编码地点 API完全符合您的要求。

于 2012-10-09T09:47:47.310 回答