一.需求描述:设备在上线时需要在上线点记录所在地点的坐标和位置描述信息

分别需要实现三个功能

1.根据坐标点显示位置信息,图1中的红色坐标点跳转到图2时,在腾讯地图上标出所在坐标点,并显示地点信息;

2.定位当前所在位置:点击蓝色图标,会定位当前所在位置,在腾讯地图中显示如图2中标示的①一样的信息;

3.关键字搜索地址:在输入框输入关键信息后会显示至多十个匹配的信息,点击列表中的地址,会在腾讯地图中显示如图中标示的①一样的信息;

点击图2右上角【完成】按钮,选中的位置信息中的坐标点和详细地址描述信息会显示在图1中。

二.百度地图坐标在腾讯地图上的偏差问题

因为浏览器端网站显示的地图使用的是百度地图,之前写入数据库的坐标点全是基于百度地图的,所以在实现小程序定位的时候想直接基于百度坐标去实现。需要注意,直接调用百度地图小程序接口,在腾讯地图上显示时会出现很大的偏差,所以显示地点坐标时需要使用腾讯地图逆地址解析接口设置coor_type值为3(baidu经纬度),在位置信息保存时,再把腾讯地图坐标转换为百度地图坐标。

三.功能实现代码:

1.坐标点显示详细位置信息原来使用了百度提供逆地址解析,后面发现定位出来的位置信息有很大的偏差,所以采用了腾讯地图的逆地址解析。

 //根据坐标点在腾讯地图中标识位置信息setInitMarker:function(location){var that = this;  var fail = function(data) {console.log(data)};var success = function(data) {   var  wxMarkerData=[]//https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/methodReverseGeocoderwxMarkerData.push({ // 获取返回结果,放到mks数组中address: data.result.address,desc:data.result.formatted_addresses.recommend,id: 0,latitude: data.result.location.lat,longitude: data.result.location.lng,iconPath: '../../../images/marker_red.png',//图标路径width: 25,height: 25, });that.setData({markers: wxMarkerData}); that.showSearchInfo(wxMarkerData[0], 0);}qqmapsdk.reverseGeocoder({location:location,//百度地图坐标点coord_type:3,//3是baidu经纬度fail: fail,success: success           }); }, 

2. 当前位置定位功能使用也是腾讯地图的逆地址解析 ,关键在于,不设置location的值将默认定位到当前位置

//当前位置坐标点信息setCurrentLocation:function(){var that = this;    var fail = function(data) {console.log(data)};var success = function(data) {             //在腾讯地图中获取到腾讯的坐标点 var lng=data.result.location.lngvar lat=data.result.location.lat//将腾讯地图坐标点转换为百度地图坐标点并设置经度和纬度的值,以便下一步保存,除此外腾讯位置信息保留显示var coordinate=that.txMapToBdMap(lng,lat)            that.setData({location: coordinate.lng+','+coordinate.lat ,longitude:  coordinate.lng,latitude:  coordinate.lat})wxMarkerData={iconPath: '../../../images/marker_red.png',iconTapPath: '../../../images/marker_red.png',width:30,height:30,longitude:data.result.location.lng,latitude:data.result.location.lat,address:data.result.address, desc:data.result.formatted_addresses.recommend}that.setData({markers: wxMarkerData});        that.showSearchInfo(wxMarkerData, 0);}qqmapsdk.reverseGeocoder({ //location不设置默认显示当前位置fail: fail,success: success           }); },//显示坐标点的详细地址信息showSearchInfo: function(data, i) {var that = this;that.setData({rgcData: {desc: data.desc + '\n',address: '地址:' + data.address + '\n'},chooseAddress:data.address});},

3. 地址关键词搜索百度开放平台提供的POI检索热词联想

//地图定位部分的搜索框bindKeyInput: function(e) {var that = this;  if (e.detail.value === '') {that.setData({sugData: ''});return;} var fail = function(data) {console.log(data)};var success = function(data) {   that.setData({addressList: data.result});}BMap.suggestion({query: e.detail.value,            region: this.data.content.city=='保亭'?'保亭黎族苗族自治':this.data.content.city,city_limit: true,fail: fail,success: success});},
//选择搜索结果中地点chooseAddress:function(e){//得到腾讯地图坐标数据var item=e.currentTarget.dataset.item  //腾讯地图转换为百度地图var coordinate= this.txMapToBdMap(item.location.lng,item.location.lat)var location=coordinate.lat+","+coordinate.lng this.setData({markers:item,chooseAddress:item.address,location:location, longitude:coordinate.lng,latitude:coordinate.lat})console.log("选中的坐标点1:"+location)this.setInitMarker(location)},

注意代码中region的配置必须是市县的全称去掉市|县!!!

下面的代码是网上找的

 // 腾讯地图转百度地图经纬度txMapToBdMap:function (lng, lat) { let x_pi = 3.14159265358979324 * 3000.0 / 180.0;let x = lng;let y = lat;let z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);let theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);let lngs = z * Math.cos(theta) + 0.0065;let lats = z * Math.sin(theta) + 0.006;var lng=lngs.toFixed(6)var lat=lats.toFixed(6)return {lng: lng,lat: lat } },

使用百度地图坐标在微信小程序中定位显示相关推荐

  1. 微信小程序中定位报错在app.json中声明permission字段

    微信小程序在获取用户位置时后台报错 在搭建小程序的过程中出现报错,报错内容:getLocation需要在app.json中声明permission字段. 出现这类的提示,获取不到用户的地理位置,其实提 ...

  2. 微信小程序中实现定位以及逆地址解析

    文章目录 前言 一.原理 二.腾讯地图key 二.编码 1. App.json 2. JavaScript 3. 返回值 总结 前言 在微信小程序开发中,我们可以提前获取用户的地理位置,为用户提供更好 ...

  3. 山东大学项目实训——地图圈系统——微信小程序(18)

    地图圈系统--微信小程序(18) 一.轨迹记录功能 二.项目代码 三.效果展示 一.轨迹记录功能 轨迹记录功能的实现思路相对简单,设置一个定时器,每隔1s获取一下当前位置,将当前的经纬度坐标加入到数组 ...

  4. uni-app 微信小程序中关于 map 地图使用案例分享

    这篇文章,我将带领大家使用微信内置地图详细讲解关于如何配置地图.打开地图和使用地图. 目录 1.配置地图 2.先写页面内,这里我创建了一个 map示例页面 mapDemo.vue 2.1 关于 map ...

  5. 在微信小程序中打开地图选择位置功能

    在微信小程序中打开地图选择位置功能 前言 首先查看效果 一.准备工作 1-1. **下载小程序地理定位** ,[qqmap-wx-jssdk.js](https://lbs.qq.com/miniPr ...

  6. 山东大学项目实训——地图圈系统——微信小程序(5)

    地图圈系统--微信小程序(5) 一.腾讯位置服务路线规划api 二.结果响应实例 三.项目代码 四.效果展示 一.腾讯位置服务路线规划api 提供路线规划能力. 1.驾车(driving):支持结合实 ...

  7. 微信小程序获取定位后使用腾讯地图解析到市位置

    微信小程序获取定位解析当前城市位置 咱们就话不多说,这呢是我第一次发布文章,第一次使用,所以使用的也比较简单,也还不是很熟悉,接下来呢就直接上代码吧,希望喜欢的朋友可以关注关注嘿嘿 首先我们需要引入腾 ...

  8. 山东大学项目实训——地图圈系统——微信小程序(16)

    地图圈系统--微信小程序(16) 一.社区功能 二.项目代码 三.效果展示 一.社区功能 这次项目实训的社区功能是一个很大的模块,包括显示用户发布的文字及图片.用户选择的地点.发布的时间.点赞.评论等 ...

  9. 山东大学项目实训——地图圈系统——微信小程序(17)

    地图圈系统--微信小程序(17) 一.社区附加功能 二.项目代码 三.效果展示 一.社区附加功能 在上次社区功能的基础上,我增加了几个附加功能,首先点击用户头像可以看到此用户的用户信息,然后点击查看动 ...

最新文章

  1. [转贴]漫谈计算机图书翻译的四种境界
  2. 3D CNN框架结构各层计算
  3. 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程
  4. manjaro文件不是一个有效的图表主题_重磅分享-揭开Excel动态交互式图表神秘面纱...
  5. iNeuOS工业互联网操作系统,提升分布式云端控制安全策略和增加实时日志功能...
  6. java学习(67):匿名内部类
  7. MySQL存储过程语句(if,while)的使用
  8. IOS 内存优化和调试技巧
  9. Spark RDD概念学习系列之什么是Pair RDD
  10. C语言课设:图书管理系统
  11. mysql-世界-全球数据
  12. 华为天才少年稚晖君做了一把模块化机械键盘,引起极客圈地震,网友:这才是真正的客制化...
  13. html字母分别代表什么,HTML 编码
  14. Matlab按照二进制读写txt文件
  15. Spark:reduceByKey与groupByKey进行对比
  16. vue项目中解决谷歌浏览器默认填充账号密码问题
  17. 物联网卡的分类有哪些
  18. 高斯噪声/白噪声/高斯白噪声的区别
  19. Android平台架构简介
  20. 全网页都变灰了,这是怎么实现的?

热门文章

  1. 智能制造 | 如何快速自动生成站位表及自动与BOM校验?
  2. 03多线程(自学时笔记)
  3. 英语求职信 应聘计算机安全人员,计算机信息安全的自荐信范文
  4. node.js+uni计算机毕设项目客户拜访系统小程序(程序+小程序+LW)
  5. 民法 不当得利vs无权占有
  6. 10.27 动词未然形
  7. 服务器芯片是几纳米,未来就靠它了 IBM宣布5纳米芯片技术
  8. CefSharp语言(Locales)本地化问题
  9. webpack打包优化之moment语言包优化moment-locales-webpack-plugin
  10. CCRC信息安全服务资质认证各分项有哪些?