java - 当我在 java 中有纬度和经度时,如何获取位置的地址?

标签 java

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

最佳答案

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

  1. Web Service client(Reverse geocoding)
  2. JSON

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

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

Google 正在提供免费的网络服务客户端 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;
    }
}

关于java - 当我在 java 中有纬度和经度时,如何获取位置的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12797198/

相关文章:

java - 为什么我的启动画面不起作用?

java - 我们可以将多个记录作为单个 java 请求加载到 mysql-DB 的多个表中吗?

java - 每次调用 isEmailVerified() 都会返回错误条件,即使在验证电子邮件之后

java - 从 grails 应用程序中的自定义 groovy 文件加载 spring bean

java - Tomcat 线程模型 - 每个请求模型中的线程是否处理与该请求相关的所有工作?

java - 获取所选元素在 JList 中的位置

java非阻塞缓存实现

java - 通过几个简单标准进行验证的 validator 类 - 这是上帝对象吗?

java repaint 屏蔽了 jbutton

Java 方法约定