当前位置:网站首页>Sky map coordinate system to Gaode coordinate system WGS84 to GCJ02
Sky map coordinate system to Gaode coordinate system WGS84 to GCJ02
2022-08-04 01:32:00 【sr_www】
let [lng, lat] = [116.391358342, 39.9049662090001]
console.log([lng, lat].toString())
console.log(wgs84Togcj02(lng, lat).toString())
function wgs84Togcj02(lng, lat) {
if (out_of_china(lng, lat)) {
console.log('国外')
return [lng, lat]
}
//定义一些常量
//GCJ02 转换为 WGS84
const x_PI = 3.14159265358979324 * 3000.0 / 180.0
const PI = 3.1415926535897932384626
const a = 6378245.0
const ee = 0.00669342162296594323
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)
var mglat = lat + dlat
var mglng = lng + dlng
return [mglng, mglat]
//return [lng * 2 - mglng, lat * 2 - mglat]
}
function out_of_china(lng, lat) {
return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false)
}
function transformlat(lng, lat) {
const x_PI = 3.14159265358979324 * 3000.0 / 180.0
const PI = 3.1415926535897932384626
const a = 6378245.0
const ee = 0.00669342162296594323
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
}
function transformlng(lng, lat) {
const x_PI = 3.14159265358979324 * 3000.0 / 180.0
const PI = 3.1415926535897932384626
const a = 6378245.0
const ee = 0.00669342162296594323
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
}
边栏推荐
- 600MHz频段来了,它会是新的黄金频段吗?
- 《Greenplum构建实时数据仓库实践》简介
- typescript51-泛型的基本使用
- typescript51 - basic use of generics
- jmeter跨平台运行csv等文件
- 【正则表达式】笔记
- Promise 解决阻塞式同步,将异步变为同步
- nodejs install multi-version version switching
- How to copy baby from Taobao (or Tmall store) through API interface to Pinduoduo interface code docking tutorial
- Linux安装mysql最简单教程(一次成功)
猜你喜欢
随机推荐
nodejs 安装多版本 版本切换
在Activity中获取另一个XML文件的控件
持续投入商品研发,叮咚买菜赢在了供应链投入上
MySQL回表指的是什么
VR全景拍摄线上展馆,3D全景带你沉浸体验
敏捷交付的工程效能治理
TensoFlow学习记录(二):基础操作
通用的测试用例编写大全(登录测试/web测试等)
OpenCV如何实现Sobel边缘检测
XSS - Bypass for loop filtering
一个项目的整体测试流程有哪几个阶段?测试方法有哪些?
KunlunBase 1.0 发布了!
【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘
nodejs+express realizes the access to the database mysql and displays the data on the page
多渠道打包
How to copy baby from Taobao (or Tmall store) through API interface to Pinduoduo interface code docking tutorial
Jmeter cross-platform operation CSV files
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化
优秀的测试/开发程序员,是怎样修炼的?步步为营地去执行......
Observability:你所需要知道的关于 Syslog 的一些知识









