首页 > 其他分享 >js原始坐标转百度坐标(GPS坐标转百度坐标)(火星坐标转百度坐标)

js原始坐标转百度坐标(GPS坐标转百度坐标)(火星坐标转百度坐标)

时间:2023-06-10 14:00:34浏览次数:40  
标签:百度 js let 坐标 lat lng PI sin Math

wgs84togcj02tobd09(lng, lat) {
    const xPI = 3.14159265358979324 * 3000.0 / 180.0
    const PI = 3.1415926535897932384626
    const a = 6378245.0
    const ee = 0.00669342162296594323
    // WGS84转GCj02
    let dlat = transformlat(lng - 105.0, lat - 35.0)
    let dlng = transformlng(lng - 105.0, lat - 35.0)
    let radlat = lat / 180.0 * PI
    let magic = Math.sin(radlat)
    magic = 1 - ee * magic * magic
    let sqrtmagic = Math.sqrt(magic)
    dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI)
    dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI)
    let mglat = lat + dlat
    let mglng = lng + dlng
    // 火星坐标系与百度坐标系的转换
    let z = Math.sqrt(mglng * mglng + mglat * mglat) + 0.00002 * Math.sin(mglat * xPI)
    let theta = Math.atan2(mglat, mglng) + 0.000003 * Math.cos(mglng * xPI)
    let bdlng = z * Math.cos(theta) + 0.0065
    let bdlat = z * Math.sin(theta) + 0.006
    return {
        lng: bdlng,
        lat: bdlat
    }
}

transformlat(lng, lat) {
    const PI = 3.1415926535897932384626
    let ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng))
    ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0
    ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0
    ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0
    return ret
}

transformlng(lng, lat) {
    const PI = 3.1415926535897932384626
    let ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng))
    ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0
    ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0
    ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0
    return ret
}

 

翻译

搜索

复制

<iframe height="240" width="320"></iframe>

标签:百度,js,let,坐标,lat,lng,PI,sin,Math
From: https://www.cnblogs.com/ShiQi-XiaoXiao/p/17471197.html

相关文章

  • js层
    browseCourse.js$(document).ready(function(){$("#addCourse").click(function(){$("#popup").css("display","block")$("#overlay").css("display","block")})......
  • JS-变量、常量和数组
    一.变量变量是计算机中用来存储数据的“容器”,它可以让计算机变得有记忆,通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】(数据),这个符号就是变量,这个具体的值称为字面量。<script>//x符号代表了5这个数值x=5//y符号代表了6这个数值y=6......
  • JS中循环遍历数组的几种常用方式总结
    第一种:for循环,也是最常见的最简单的一种,也是使用频率最高的一种,虽然性能不弱,但仍有优化空间constarr=[11,22,33,44,55,66,77,88];for(leti=0;i<arr.length;i++){console.log(arr[i]);}第二种:优化版for循环constarr=[11,22,33,44,5......
  • 给第一行单元格赋值 + WPS JS获取工作表的总行数 + WPS JS获取工作表的总行数
    戳我,了解更多相关办公的小技巧给第一行单元格赋值1、在计算机中有一种ASCII编码,其中A在计算机中的表示的数字是65,a的ascii码是97,b的ascii码是98。2、从A1到F1可以看到第一个字母在变化,第2个数字始终是1,A的ascii码是65,F的ascii码是70。3、我们定义letter=65,使letter逐渐靠......
  • js 实现排列组合
    组合:(不考虑顺序,无重复)//测试用例letdataArr=[1,2,3,4,5];functioncombination(dataArr,remainNum,currentArr){if(remainNum===0){console.log(...currentArr);return;}for(leti=0;i<dataArr.length+1-remainNum;i++){......
  • js笔记_流程控制
    if判断varage=1;if(age>3){alterr("haha");}elseif{age<5){alert("kuwa");}else{alert("kuwa");}while循环,避免程序死循环while(age<100){age=age+1;console.log(age)}do{age=age+1;console.log(age)}while(age&l......
  • js笔记_Map,Set
    //ES6Mapvarmap=newMap([["tom",100],["jack",100],["jj",100]]);varname=map.get("tom");//通过key获取valuemap.set(‘admin’,123456);//新增或修改map.delete(“tom”);//删除Set:无序不重复的集合set.add(2);//添加set.delete;//删除consol......
  • React - 03 JSX语法示例及JSX渲染机制
    1.根据变量控制元素显示/隐藏2种方式,方式1会渲染但不显示,方式2不会渲染元素2.循环列表渲染用数组的map方法,直接将要循环的元素返回如果数组的每个元素都是empty,则为稀疏数组,否则为密集数组,即使每个元素都是null也是密集数组3.JSX渲染机制第一步:把我们编写的JSX语法,编译为虚拟DOM对......
  • js笔记_对象
    对象:若干键值对var对象名={属性名:属性值,属性名:属性值,属性名:属性值,属性名:属性值}定义一个person对象,有两个属性!varperson={name:"li",age:"18"}js中对象,{.........}表示一个对象,键值对描述属性xxxx:xxxx,多个属性之间用逗号隔开,最后一个属性不用加逗号!1.对象赋......
  • js笔记
    /*1.前提:IDEA需要设置支持ES6语法·usestrict`;严格检查模式2.数据类型2.1字符串1.正常字符串:单引号或者双引号2.;转义字符\'\n\t\u4e2d\u###unicode字符\x41Ascll字符3.多行字符串编写//tab上面,esc下面varmsg=hello......