微信地图wgs84坐标,gcj02坐标,bd09坐标转换

article/2025/10/21 0:37:33

微信小程序三种常见经纬度坐标系的转化

遇见问题:在其它端点位显示正常,在小程序上点位发生偏移,微信小程序是gcj02坐标,就是xxToGcj02,具体情况具体分析

我们常用的地图api坐标系有wgs84坐标系,gcj02坐标系,bd09坐标系。

wgs坐标系是国际上通用的坐标系,也称地球坐标系,gps和北斗系统都使用的是wgs坐标系。谷歌地图使用的是wgs坐标系(中国部分除外),openstreetmap使用的也是这种坐标系

gcj02坐标系是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系,也称火星坐标系,谷歌中国地图、搜搜中国地图、高德地图采用的是GCJ02地理坐标系。

BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系,由百度公司独创,百度地图使用的就是这个坐标系。

使用方法:(截图吧,不然不知道放在哪里)

引入js文件,路径根据自己路径来

调用方法,放进数组marker中

js文件

// 一些常量
var PI = 3.1415926535897932384626;
var X_PI = 3.14159265358979324 * 3000.0 / 180.0;
var a = 6378245.0;
var ee = 0.00669342162296594323;
// 检测是否在国内
function isOutofChina(lng, lat) {return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);
};// BD-09坐标转换为GCJ-02坐标
function bd09ToGcj02(lng, lat) {var x = lng - 0.0065;var y = lat - 0.006;var magic = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);var sqrtMagic = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);var mgLng = sqrtMagic * Math.cos(magic);var mgLat = sqrtMagic * Math.sin(magic);return [mgLng, mgLat]
};
// GCJ-02坐标转换为BD-09坐标
function gcj02ToBd09(lng, lat) {var magic = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * X_PI);var sqrtMagic = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * X_PI);var mgLng = sqrtMagic * Math.cos(magic) + 0.0065;var mgLat = sqrtMagic * Math.sin(magic) + 0.006;return [mgLng, mgLat]
};
// WGS-84坐标转换为GCJ-02坐标
function wgs84ToGcj02(lng, lat) {if (isOutofChina(lng, lat)) {return [lng, lat]} else {var dlat = transformLat(lng - 105.0, lat - 35.0);var dlng = transformLng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var 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 = parseFloat(lat) + parseFloat(dlat);var mglng = parseFloat(lng) + parseFloat(dlng);return [mglng, mglat]}
};
// GCJ02-坐标转换为WGS-84坐标
function gcj02ToWgs84(lng, lat) {if (isOutofChina(lng, lat)) {return [lng, lat]} else {var dlat = transformLat(lng - 105.0, lat - 35.0);var dlng = transformLng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var 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 = parseFloat(lat) + parseFloat(dlat);var mglng = parseFloat(lng) + parseFloat(dlng);return [lng * 2 - mglng, lat * 2 - mglat]}
};
// 转换经度
function transformLng(lng, lat) {var 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
}
// 转换纬度
function transformLat(lng, lat) {var 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
}module.exports = {bd09ToGcj02: bd09ToGcj02,gcj02ToBd09: gcj02ToBd09,wgs84ToGcj02: wgs84ToGcj02,gcj02ToWgs84: gcj02ToWgs84
}

 


http://chatgpt.dhexx.cn/article/YUO5R39Y.shtml

相关文章

Android仿微信地图定位和位置选择(上)

一、地图集成 集成腾讯地图SDK&#xff0c;https://lbs.qq.com/&#xff0c;申请AppKey。 1、dependencies implementation com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.6 implementation com.tencent.map:tencent-map-vector-sdk:4.3.4 2、AndroidMa…

微信公众号h5界面获取展示微信内置地图与地图坐标间的转换 — 微信地图(gcj02)转为百度地图

此文章中实例用测试号进行演示 。getLocation openLocation 主要运用微信JS-SDK&#xff0c;微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK&#xff0c;网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能…

微信小程序地图功能

一&#xff0c;显示地图 <map id"map" longitude"{{longitude}}" latitude"{{latitude}}" scale"14" controls"{{controls}}" bindcontroltap"controltap" markers"{{markers}}" bindmarkertap"…

微信小程序---高德地图API

本文章介绍微信小程序调用高德地图API的过程&#xff0c;使用高德定位功能做演示。微信小程序目前支持百度地图、高德地图、腾讯地图。用法可以说是基本完全一样&#xff0c;本文章以高德为例&#xff0c;简单说一下他们的区别&#xff0c;高德地图精度应该是最准确的&#xff…

微信小程序地图控件Map的使用

本文介绍微信小程序map控件的使用 map为原生控件之一…… 介绍完map控件之后下面直接来看代码怎么实现吧 和往常一样&#xff0c;这些代码贴过去就可以直接通用的 首先wxml文件(极简)&#xff1a; <map id"map" scale"16" controls"{{controls}}&…

微信小程序地图导航实例讲解

微信小程序地图导航实例讲解 先上演示视频准备工作如下在app.json中添加 watch页面代码watch.wxmlwatch.wxsswatch.js connect导航页面使用在腾讯位置服务需要获取key地图选点当用户未点击选址时&#xff0c;默认传入用户当前地址&#xff0c;可以在onShow方法中定义 代码解读 …

微信小程序——地图(定位,多个标记点)

效果图 指定为位置 Page({data: {longitude: 113.14278, //地图界面中心的经度latitude: 23.02882, //地图界面中心的纬度markers: [ //标志点的位置//位置0{id: 0,iconPath: "../images/1.png",latitude: 23.04308268848755,longitude: 113.13562655285273,width: …

Poi读取Excel时的日期操作(原创)

在java读取excel获取数据存入数据库时&#xff0c;经常会遇到多种日期类型和时间类型混用的情况 比如这样&#xff0c;一边是纯日期&#xff0c;一边是“年月日 时分秒”形式&#xff0c; 很多时候我们需要直接根据内容来区分二者&#xff0c;从而将取到的时间值转换成与excel…

Java用poi实现读取Excel文件内容

使用poi读取Excel文件 前言 用户可以直接读取本地文件&#xff0c;也可以通过上传文件的形式读取excel 注意&#xff1a;poi对于读取到空白行的时候&#xff0c;会默认的认为是最后一行&#xff0c;将不会再读取空白行下面的数据 第一步 导入依赖 <dependency><gro…

使用poi读取Excel中的数据到数据库

大家好今儿给大家带来的是使用poi读取Excel中的数据到数据库 目录 大家好今儿给大家带来的是使用poi读取Excel中的数据到数据库1.poi简单介绍2.poi操作excel3.代码部分(可直接用)4.测试5.总结 1.poi简单介绍 POI是Apache出品的一个开源的专门用来操作我们Microsoft Office格式…

POI读取Excel浅谈

POI读取Excel浅谈 博客分类&#xff1a; J2EEJava开源Servlet/Jsp设计模式 Excel Ruby Office Apache Microsoft 先看代码&#xff0c;挨句解释&#xff1a; 一般遍历使用两种方式&#xff0c;1&#xff1a;得到总的行数和每行的列数&#xff0c;然后循环。2&#xff1a;使用…

【Java】POI读取Excel的两种模式

用户模式 基本使用 usermodel相关包&#xff0c;对用户友好&#xff0c;在ss包下有统一的接口&#xff0c;但它是把整个文件读取到内存中&#xff0c;对于大量数据很容易内存溢出&#xff0c;所以只能用来处理小量数据 示例代码 public static List<Map<String, Stri…

使用POI读取EXCEL中的所有Sheet表

使用POI读取EXCEL中的所有Sheet表 最近接触到了多sheet页的导入导出功能&#xff0c;现举例如何 使用POI&#xff0c;通过多个循环读取EXCEL中的所有Sheet表内容。 package poitest; import java.io.File; import java.io.FileInputStream; import org.apache.poi.hssf.u…

poi读取Excel文档(.xls .xlsx)包含合并单元格

例子&#xff1a; 结果&#xff1a; 开始&#xff1a;----------------------------------- 导入的poi <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</ar…

Java教程:使用POI读取excel文档(根据BV1bJ411G7Aw整理)

Java教程&#xff1a;使用POI读取excel文档&#xff08;根据BV1bJ411G7Aw整理&#xff09; 最近公司需要我做一个导出Excel表格的功能&#xff0c;为此来学习一下POI&#xff0c;在这里记录一下学习笔记。B站直接搜BV1bJ411G7Aw就能找到视频。 一、简介 poi如何操作表格 二…

poi读取excel模板,并填充数据

一、POI介绍 Apache POI是Apache软件基金会的开放源码函式库&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 基本功能&#xff1a; HSSF &#xff0d; 提供读写Microsoft Excel格式档案的功能。 XSSF &#xff0d; 提供读写Microsoft Excel OOXM…

java使用poi操作读取Excel文件

在上代码之前首先说说Excel文件的一些名词 工作区workbook&#xff1a;可以理解为一个Excel文件&#xff0c;比如LinkL.xlsx文件 表sheet&#xff1a;一个.xlsx文件中的不同表 行row&#xff1a;表中的一行数据 单元格cell&#xff1a;每一行中的每一个数据就是单元格 附&…

使用Java通过POI读取EXCEL中的数据

这里有个Excel&#xff0c;怎么使用java读取excel中的数据呢&#xff1f; 文件存放位置&#xff1a; 首先引入poi的jar包 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></…

使用POI读取excel文件内容

1.前言 项目中要求读取excel文件内容&#xff0c;并将其转化为xml格式。常见读取excel文档一般使用POI和JExcelAPI这两个工具。这里我们介绍使用POI实现读取excel文档。 2.代码实例&#xff1a; package edu.sjtu.erplab.poi;import java.io.FileInputStream;import java.io.Fi…

使用POI读取Excel文件

使用POI读取Excel文件 一、前言 用户可以通过上传excel文件&#xff0c;后端通过读取excel文件的内容并将内容写入数据库中以便更好的使用。 本文档使用的excel的工具类既可以读取有合并单元格的文件也可以读取没有合并单元格的文件&#xff0c;并且读取到单元格的数据进行了…