怎么解决网页百度地图的经纬度在小程序腾讯地图上显示不对

时间: 2023-12-08 18:02:49 浏览: 56
这个问题可能是由于不同地图使用的坐标系不同导致的,百度地图使用的是BD-09坐标系,而腾讯地图使用的是GCJ-02坐标系。 因此,需要将百度地图的经纬度转换为GCJ-02坐标系的经纬度,然后再在腾讯地图上显示。可以使用第三方的坐标转换库来实现。 比如,可以使用百度地图提供的API将BD-09坐标系的经纬度转换为WGS-84坐标系的经纬度,然后再使用腾讯地图提供的API将WGS-84坐标系的经纬度转换为GCJ-02坐标系的经纬度。 具体实现过程可以参考以下代码示例: ```javascript // 将百度地图的经纬度转换为WGS-84坐标系的经纬度 function bd09ToWgs84(bdLon, bdLat) { var x = bdLon - 0.0065; var y = bdLat - 0.006; var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * Math.PI); var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * Math.PI); var lng = z * Math.cos(theta); var lat = z * Math.sin(theta); return [lng, lat]; } // 将WGS-84坐标系的经纬度转换为GCJ-02坐标系的经纬度 function wgs84ToGcj02(lng, lat) { var a = 6378245.0; var ee = 0.00669342162296594323; var dLat = transformLat(lng - 105.0, lat - 35.0); var dLng = transformLng(lng - 105.0, lat - 35.0); var radLat = lat / 180.0 * Math.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) * Math.PI); dLng = (dLng * 180.0) / (a / sqrtMagic * Math.cos(radLat) * Math.PI); var mgLat = lat + dLat; var mgLng = lng + dLng; return [mgLng, 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 * Math.PI) + 20.0 * Math.sin(2.0 * lng * Math.PI)) * 2.0) / 3.0; ret += ((20.0 * Math.sin(lng * Math.PI) + 40.0 * Math.sin((lng / 3.0) * Math.PI)) * 2.0) / 3.0; ret += ((150.0 * Math.sin((lng / 12.0) * Math.PI) + 300.0 * Math.sin((lng / 30.0) * Math.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 * Math.PI) + 20.0 * Math.sin(2.0 * lng * Math.PI)) * 2.0) / 3.0; ret += ((20.0 * Math.sin(lat * Math.PI) + 40.0 * Math.sin((lat / 3.0) * Math.PI)) * 2.0) / 3.0; ret += ((160.0 * Math.sin((lat / 12.0) * Math.PI) + 320 * Math.sin((lat * Math.PI) / 30.0)) * 2.0) / 3.0; return ret; } // 将百度地图的经纬度转换为腾讯地图的经纬度 function bd09ToTencent(bdLon, bdLat) { var wgs84 = bd09ToWgs84(bdLon, bdLat); var gcj02 = wgs84ToGcj02(wgs84[0], wgs84[1]); return gcj02; } ``` 使用示例: ```javascript var bdLon = 116.404; var bdLat = 39.915; var tencent = bd09ToTencent(bdLon, bdLat); console.log(tencent); // [116.39762729192001, 39.908656739576166] ``` 其中,`bdLon`和`bdLat`分别为百度地图的经纬度,`tencent`为转换后的腾讯地图的经纬度。

相关推荐

最新推荐

recommend-type

使用百度地图实现地图网格的示例

下面小编就为大家分享一篇使用百度地图实现地图网格的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

微信小程序实现打开内置地图功能【附源码下载】

主要介绍了微信小程序实现打开内置地图功能,涉及微信小程序使用wx.openLocation函数获取经纬度信息的相关使用技巧,并附带源码供读者下载参考,需要的朋友可以参考下
recommend-type

利用python和百度地图API实现数据地图标注的方法

主要介绍了利用python和百度地图API实现数据地图标注的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Python 利用高德地图api实现经纬度与地址的批量转换

主要介绍了Python 利用高德地图api实现经纬度与地址的批量转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Google baidu 地图 gps偏移(经纬度偏移)的技术纠偏解决方案,在gps实际开发中的应用

Google baidu 地图 gps偏移(经纬度偏移)的技术纠偏解决方案,在gps实际开发中的应用,最权威的解决方案
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。