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

这篇具有很好参考价值的文章主要介绍了使用百度地图坐标在微信小程序中定位显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

分别需要实现三个功能

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/methodReverseGeocoder
            wxMarkerData.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.lng
            var 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的配置必须是市县的全称去掉市|县!!!

下面的代码是网上找的文章来源地址https://www.toymoban.com/news/detail-484312.html

 // 腾讯地图转百度地图经纬度
  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 
    } 
  },

到了这里,关于使用百度地图坐标在微信小程序中定位显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在uniapp微信小程序中使用百度地图

    **第一步:**申请秘钥AK,这个自行百度申请。 **第二步:**引入百度地图js模块 微信小程序JSAPI下载 下载js文件后,解压,并放到项目中。 **第三步:**在项目中导入js API , html代码:复制百度地图官网的。最主要是js代码。 js首先需要导入js api 请求定位,当不传参数的时候,会

    2024年04月11日
    浏览(29)
  • 在微信小程序中打开地图选择位置功能

    说真的,这是我第一次接触移动端的地图模块,一开始我真的一头雾水,感觉这个很难,但是通过不断的探索,在慢慢摸索中,一点一点搞懂了很多东西,还是很开心的,就想把我的经验分享给大家。希望能帮助到你们~ 需要用户授权,才能拿到当前位置。如果用户拒绝后,

    2024年02月09日
    浏览(33)
  • 如何在微信小程序中加载自己的地图数据

    由于微信小程序无法进行DOM操作,导致像openlayers、leaflet这种常用的js库无法在微信小程序内使用,导致加载高德、百度、mapbox还有自定义的瓦片地图数据变得很困难。 目前,大多数情况下是使用以下三种方法实现加载自定义的瓦片数据。 1. 使用web-view 优势:可以使用丰富的

    2024年02月10日
    浏览(43)
  • 微信小程序使用高德地图实现检索定位附近周边的POI功能示例

           解压下载的文件得到 amap-wx.js ,在创建的项目中,新建一个名为 libs 目录,将 amap-wx.js 文件拷贝到 libs 的本地目录下。 登录微信公众平台,在 \\\"设置\\\" → \\\"开发设置\\\" 中设置 request 合法域名,将  https://restapi.amap.com  中添加进去,如下图所示:    

    2024年02月03日
    浏览(46)
  • 微信小程序腾讯地图定位转高德地图定位

    微信小程序获取到了当前用户的定位,需要在高德地图上进行渲染。 发现正常渲染后,偏差几百米。 这里图方便,直接丢到window上了 这里演示“腾讯地图”转“高德地图”

    2024年01月25日
    浏览(59)
  • 微信小程序 - 接入腾讯地图 SDK 及详细使用教程,结合小程序 mpa 地图组件展示腾讯地图(基础使用 / 授权当前位置 / 配合小程序map组件的使用 / 腾讯地图逆地址解析 / 坐标系的转化)

    网上的教程都太乱了,代码根本没办法拿到自己的项目中去。 本文实现了 微信小程序中接入使用腾讯地图插件详细教程,并提供了 基础使用 / 授权当前位置 / 配合小程序map组件的使用 / 腾讯地图逆地址解析 / 坐标系的转化等等操作, 你可以直接复制示例代码,稍微改改就能

    2024年02月09日
    浏览(72)
  • 微信小程序对接百度地图

    微信小程序如何接入百度地图导航功能?下面带来接入百度地图的操作教程。 1、登录百度地图开放平台:lbsyun.baidu.com,注册为开发者;需要填写使用场景,至少100字。 2、依次点击顶部开发文档—Web开发下方的微信小程序 Javascript API—开发指南—配置环境—下载百度地图微

    2024年02月10日
    浏览(29)
  • 微信小程序实现地图定位

    前言 地图定位这个功能相信大家在学习插件的时候都有过接触,那么在这篇文章中我来为大家介绍微信小程序中的地图定位功能,很简单哦 在此之前我们可以先去微信官方文档小程序组件地图进行了解 点此进入小程序中map介绍 map组件提供了地图展示、交互、叠加点线面及文

    2024年02月01日
    浏览(50)
  • 百度地图采集经纬度坐标数据定位的javascript实战开发(地理坐标拾取系统、地址定位点选插件、实时定位、数据导入、地理编码、位置纠偏)

    在百度地图的标注开发中,最为关键的操作就是经纬度坐标信息的拾取。在不同的应用场景,坐标的拾取方式不同。现就常见的地理坐标拾取系统、地址定位点选插件、手机端GPS实时定位、数据导入、地理编码、位置纠偏等做全面的介绍。 传送门:http://api.map.baidu.com/lbsapi/

    2024年02月01日
    浏览(32)
  • 微信小程序学习实录3(环境部署、百度地图微信小程序、单击更换图标、弹窗信息、导航、支持腾讯百度高德地图调起)

    百度地图微信小程序JavaScript API(简称小程序JSAPI),支持在微信小程序中使用百度数据资源。小程序JSAPI是对百度地图Web服务API中的部分接口按照微信小程序的规范进行了前端JS封装,方便了微信小程序开发者的调用。部分接口对返回的POI等数据按照微信小程序的数据格式进

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包