Java实现经纬度格式转化

Java工具类目录

首先了解经纬度的几种格式:
1.) ddd.ddddd °【度 . 度 格式】的十进制小数部分(5位)
2.) ddd°mm.mmm’ 【度 . 分 . 分 格式】的十进制小数部分(3位)
3.) ddd°mm’ss’’ 【度 . 分 . 秒 格式】 Google 使用的是第三种格式 度。分’秒’’

提供两种转化的方法:
1、将DMS格式转化为DD格式
点击
从中可以找到方法
2、将DD格式转化为DMS格式以及满足exif中GPS格式

具体方法(网络搜索结果):
十进制单位转换成标准的度分秒
十进制的经度,纬度数的整数部分就是度数(°),小数部分乘以60得到的数取整数部分就是分数(′),再用该数的小数部分乘以60就是秒数(″)。如一个经度的十进制为:117.121806,那么:
第一步:度数(°)117°,
第二步:分数(′)7′(0.121806×60=7.308360189199448,取整数部分为7),
第三步:秒数(″)18.501611351966858″(0.30836018919944763×60=18.501611351966858),即度分秒为117°7′18.501611351966858″。
public class GPSFormatUtils {

    /**
     * 功能:         度-->度分秒
     * @param d 传入待转化格式的经度或者纬度
     */
    public  void DDtoDMS(Double d){

          String[] array=d.toString().split("[.]");
          String degrees=array[0];//得到度

          Double m=Double.parseDouble("0."+array[1])*60;
          String[] array1=m.toString().split("[.]");
          String minutes=array1[0];//得到分

          Double s=Double.parseDouble("0."+array1[1])*60;
          String[] array2=s.toString().split("[.]");
          String seconds=array2[0];//得到秒
          System.out.println(degrees+"  "+minutes+"  "+seconds);
    }

    /**
     * 功能:  度-->度分秒(满足图片格式)
     * @param d   传入待转化格式的经度或者纬度
     * @return
     */
        public  String DDtoDMS_photo(Double d){

              String[] array=d.toString().split("[.]");
              String D=array[0];//得到度

              Double m=Double.parseDouble("0."+array[1])*60;
              String[] array1=m.toString().split("[.]");
              String M=array1[0];//得到分

              Double s=Double.parseDouble("0."+array1[1])*60*10000;
              String[] array2=s.toString().split("[.]");
              String S=array2[0];//得到秒
              return  D+"/1,"+M+"/1,"+S+"/10000";
        }
}
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Java中有很多第三方库可以帮助你将经纬度转换为具体地址。 举个例子,使用Google Maps API,你可以使用以下代码将经纬度转换为具体地址: ```java // 需要导入以下库 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONArray; import org.json.JSONObject; public class LatLngToAddress { public static void main(String[] args) { try { // 这里的经纬度是示例,你可以替换成你自己的经纬度 double lat = 39.904214; double lng = 116.407394; // 构建请求URL String urlString = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + lat + "," + lng + "&key=YOUR_API_KEY"; // 发送请求 URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); // 读取响应 String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 解析响应 JSONObject jsonObject = new JSONObject(response.toString()); JSONArray jsonArray = jsonObject.getJSONArray("results"); if (jsonArray.length() > 0) { JSONObject result = jsonArray.getJSONObject(0); String address = result.getString("formatted_address"); System.out.println(address); } } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们使用了Google Maps API的Geocoding服务来将经纬度转换为具体地址。需要注意的是,你需要申请一个API key才能使用该服务。具体申请方法可以参 ### 回答2: 要在Java中将经纬度转换为具体地址,你可以使用逆地理编码API来实现。以下是一个简单的实现示例: 首先,你需要导入相关的Java库,例如 Apache HttpClient 和 JSON,以便从API获取响应和解析JSON数据。 然后,你可以使用以下步骤来进行转换: 1. 创建一个HTTP客户端,用于向逆地理编码API发出请求,并接收响应。 2. 构建逆地理编码API的请求URL,其中包括经度和纬度作为参数。 3. 使用HTTP客户端发送GET请求到API,并获取API响应。 4. 从API响应中解析出JSON数据。 5. 从JSON数据中提取出地址信息。 以下是一个简单的示例代码: ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.json.JSONObject; public class GeocodingExample { public static void main(String[] args) { double latitude = 37.7749; double longitude = -122.4194; String apiUrl = "https://api.mapbox.com/geocoding/v5/mapbox.places/"; String accessToken = "YOUR_ACCESS_TOKEN"; try { // 创建HTTP客户端 HttpClient httpClient = HttpClientBuilder.create().build(); // 构建逆地理编码API请求URL String requestUrl = apiUrl + longitude + "," + latitude + ".json?access_token=" + accessToken; // 发送GET请求到API HttpResponse response = httpClient.execute(new HttpGet(requestUrl)); // 获取API响应 String responseBody = EntityUtils.toString(response.getEntity()); // 解析JSON数据 JSONObject json = new JSONObject(responseBody); // 提取地址信息 String address = json.getJSONArray("features").getJSONObject(0).getString("place_name"); System.out.println("经纬度 (" + latitude + ", " + longitude + ") 对应的地址为:" + address); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意,上述代码中的 `YOUR_ACCESS_TOKEN` 需要替换为你自己的访问令牌。你可以从Mapbox网站上注册一个账号并生成一个访问令牌。 这只是一个简单的示例,你可以根据你使用的逆地理编码API进行适当的更改和调整。 ### 回答3: Java经纬度转化为具体地址可以通过逆地理编码的方式实现。 可以使用Java中的第三方库或者调用地图服务API来实现经纬度转地址的功能,比如高德地图的Web API。 首先,需要引入相应的库或者API,然后获取到经纬度的数值。接下来,可以通过以下步骤来将经纬度转化为具体地址: 1. 创建一个请求,包含经纬度信息,可以使用HTTP GET或者POST方法发送请求。 2. 发送请求到地图服务API,并将经纬度信息作为参数传递给API。 3. 地图服务API接收到请求后,会进行逆地理编码处理,将经纬度转化为具体的地址信息。 4. 地图服务API返回结果,包含地址信息和经纬度打点等相关信息。 5. 解析API返回的结果,提取出地址信息。 6. 最后,将地址信息输出显示或者进行其他处理。 需要注意的是,不同的地图服务API可能有不同的使用方式和参数要求,具体可以根据所选API的文档进行调整。 总之,Java经纬度转化为具体地址可以通过调用地图服务API的逆地理编码功能来实现。这样可以方便地获取到一个地点的具体地址信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值