【问题标题】:How to get location's address when i have latitude and longitude in java?当我在java中有纬度和经度时如何获取位置地址?
【发布时间】:2012-10-09 09:45:29
【问题描述】:

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

【问题讨论】:

  • Google Maps API v3 是 javascript,因此,如果您的问题是关于 Java 的,那么它与 Google Maps API 无关。

标签: java


【解决方案1】:

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

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

Web Services 客户端用于从另一个提供 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;
    }
}

【讨论】:

  • 请为您正在做的事情添加解释,而不仅仅是添加代码块
  • 正是我想要的:D
【解决方案2】:

Google 的 GeocodingPlaces API 完全符合您的要求。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多