将GPS传感器数据度分秒转化为一个秒*100倍之后的数据转化为google地图上的经纬度

        GPS传感器得到的数据为d°m′s″,进行数据传输时需要转化为秒*100的一个比较大的数据,转换公式如下:

数据data=(度*3600+分*60+秒)*100 。

比如30°24′18.12″转化为秒是:30°24′18.12″=30*3600+24*60+18.12=109458.12″,变为int值传递则乘以100变为10945812。

程序中得到这个数据之后需要得到实际的度、分、秒,只需要将数据data/(3600*100)取整得到度,(data-度*3600*100)/(60*100) 取整得到分,(data-度*3600*100-分*60*100)/100得到秒。传感器速度单位为cm/h(厘米/小时),需要转换为km/h(公里/小时)

注意:实际google地图中的经纬度一般是°格式,比如30.40503333°。那么直接将数据data/(3600*100)便得到经纬度信息。


代码实现如下:

    /**
     * if get the LatLng data from the GPS sensor, maybe, the data has calculated by
     * this formula: data=(degree*3600+ minute*60+second)*100. tips:the latitude is
     * form of degree°minute′second″.
     * so we can get the degree,minute,second from next function
     */
    private String getDmsFun(double data) {
        int degree = (int) (data / 360000);
        int minute = (int) ((data - degree * 360000) / 6000);
        int second = (int) ((data - degree * 360000 - minute * 6000) / 100);
        return String.valueOf(degree) + "°" + String.valueOf(minute) + "′"
                + String.valueOf(second) + "″";
    }

    private double bigSecond2Degree(double bigSecond) {
        return bigSecond / 360000.0;
    }

    private double centimeter2kilometer(double speed) {
        return speed / 100000.0;
    }

Gps数据类:

public class GPSDataModel {

    /**
     * this is latitude
     */
    double latitude;

    /**
     * this is longitude
     */
    double longitude;

    /**
     * this is speed,
     * get the data unit is (cm/h),so may change the unit to (km/h)
     */
    double speed;

    public GPSDataModel() {
    }

    public double getLatitude() {
        return latitude;
    }

    public void setLatitude(double latitude) {
        this.latitude = bigSecond2Degree(latitude);
    }

    public double getLongitude() {
        return longitude;
    }

    public void setLongitude(double longitude) {
        this.longitude = bigSecond2Degree(longitude);
    }

    public double getSpeed() {
        return speed;
    }

    public void setSpeed(double speed) {
        this.speed = centimeter2kilometer(speed);
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值