zoukankan      html  css  js  c++  java
  • GPS坐标转化

    //将GPS纬度信息转换为“火星坐标”的纬度
    function latToGcj02(lon, lat) {
        var c = Math.PI,
            d = Math.sin,
            e = -100 + 2 * lon + 3 * lat + 0.2 * lat * lat + 0.1 * lon * lat + 0.2 * Math.sqrt(Math.abs(lon)),
            e = e + 2 * (20 * d(6 * lon * c) + 20 * d(2 * lon * c)) / 3,
            e = e + 2 * (20 * d(lat * c) + 40 * d(lat / 3 * c)) / 3;
        return e += 2 * (160 * d(lat / 12 * c) + 320 * d(lat * c / 30)) / 3
    }
    
    //将GPS经度信息转换为“火星坐标”的纬度
    function lonToGcj02(lon, lat) {
        var c = Math.PI,
            d = Math.sin,
            e = 300 + lon + 2 * lat + 0.1 * lon * lon + 0.1 * lon * lat + 0.1 * Math.sqrt(Math.abs(lon)),
            e = e + 2 * (20 * d(6 * lon * c) + 20 * d(2 * lon * c)) / 3,
            e = e + 2 * (20 * d(lon * c) + 40 * d(lon / 3 * c)) / 3;
        return e += 2 * (150 * d(lon / 12 * c) +
            300 * d(lon / 30 * c)) / 3
    }
    
    //将经纬度信息转换为“火星坐标”体系
    function GPSToGcj02(lon, lat) {
        var a = 6378245,
            ee = 0.006693421622965823;
    
        var d = Math.PI,
            e = lonToGcj02(lon - 105, lat - 35),
            f = latToGcj02(lon - 105, lat - 35),
            h = lat / 180 * d,
            k = Math.sin(h),
            k = 1 - ee * k * k,
            l = Math.sqrt(k),
            e = 180 * e / (a / l * Math.cos(h) * d),
            f = 180 * f / (a * (1 - ee) / (k * l) * d);
        return [lon + e, lat + f]
    }
    
    //例子
    navigator.geolocation.getCurrentPosition(function(e) {
        console.log(GPSToGcj02(e.coords.longitude, e.coords.latitude));
    }, function() {
    
    }, {
        enableHighAccuracy: true,
        timeout : 10000
    });
  • 相关阅读:
    日常使用JAR包 MAVEN
    二维码
    常用验证
    文件操作
    邮件发送
    Spring获取bean对象帮助类
    mybatis-generator自动映射数据库,生成mapper.xml、mapperDao、entity
    JAVA爬虫
    MVC调试异常--未能将脚本调试器附加到计算机
    科研技能之文献管理Endnote X9——谈实用性
  • 原文地址:https://www.cnblogs.com/sherlock99/p/4346906.html
Copyright © 2011-2022 走看看