一、经纬度与度分秒的概念

经纬度是地理坐标系统中的一种表示方法,用来表示一个地理位置的经度和纬度。地球表面的经线都是一条条直线,从赤道出发,以东西两个方向延伸,每条经线都有一个经度值,经度以度为单位,范围是0°到360°。纬线也是一条条直线,从赤道出发,以南北两个方向延伸,每条纬线都有一个纬度值,纬度以度为单位,范围是-90°到90°。经纬度以度分秒的形式表示,一个度等于60分,一分等于60秒,比如116°34'56"表示116度34分56秒。

二、Android实现经纬度与度分秒的互转

Android系统提供了Location类,可以用来获取当前位置的经纬度,同时也可以根据经纬度计算出度分秒的值。具体实现的步骤如下:

1、经纬度转度分秒

首先,我们需要获取当前位置的经纬度,可以使用Location类中的getLatitude()和getLongitude()方法获取,然后将其转换为度分秒的格式,可以使用以下代码实现:

Location location = getCurrentLocation();
double latitude = location.getLatitude();
double longitude = location.getLongitude();
int latDegree = (int) latitude;
int latMinute = (int) ((latitude - latDegree) * 60);
double latSecond = (latitude - latDegree - latMinute / 60.0) * 3600;
int lngDegree = (int) longitude;
int lngMinute = (int) ((longitude - lngDegree) * 60);
double lngSecond = (longitude - lngDegree - lngMinute / 60.0) * 3600;
String latDegreeMinuteSecond = latDegree + "°" + latMinute + "'" + latSecond + "''";
String lngDegreeMinuteSecond = lngDegree + "°" + lngMinute + "'" + lngSecond + "''";

2、度分秒转经纬度

如果要将度分秒的值转换为经纬度,可以使用以下代码实现:

String latDegreeMinuteSecond = "116°34'56''";
String lngDegreeMinuteSecond = "39°54'12''";
int latDegree = Integer.parseInt(latDegreeMinuteSecond.split("°")[0]);
int latMinute = Integer.parseInt(latDegreeMinuteSecond.split("°")[1].split("'")[0]);
double latSecond = Double.parseDouble(latDegreeMinuteSecond.split("°")[1].split("'")[1].replace("''", ""));
int lngDegree = Integer.parseInt(lngDegreeMinuteSecond.split("°")[0]);
int lngMinute = Integer.parseInt(lngDegreeMinuteSecond.split("°")[1].split("'")[0]);
double lngSecond = Double.parseDouble(lngDegreeMinuteSecond.split("°")[1].split("'")[1].replace("''", ""));
double latitude = latDegree + (latMinute + latSecond / 60) / 60;
double longitude = lngDegree + (lngMinute + lngSecond / 60) / 60;

三、总结

本文介绍了如何使用Android系统的Location类实现经纬度与度分秒的互转,可以使用getLatitude()和getLongitude()方法获取经纬度,然后进行转换,也可以根据度分秒的值计算出经纬度。