微信小程序使用地图定位

5 篇文章 2 订阅
订阅专栏

一、效果展示

在这里插入图片描述

二、申请定位权限

使用微信小程序定位接口,必须申请这个权限,对类目也有要求,填写权限申请的时候,站在用户的角度填写通过率会高些。

在这里插入图片描述

在这里插入图片描述

三、申请腾讯地图sdk

申请流程地址:https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview

在这里插入图片描述

四、地图容器介绍

文档地址:https://developers.weixin.qq.com/miniprogram/dev/component/map.html
在这里插入图片描述

五、获取定位

文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html

wx.getLocation({
 type: 'wgs84',
 success (res) {
   const latitude = res.latitude
   const longitude = res.longitude
   const speed = res.speed
   const accuracy = res.accuracy
 }
})

六、源码

js代码

import util from "../../utils/util.js"

// 引入SDK核心类
var QQMapWX = require('../../utils/qqmap-wx');
// 实例化API核心类
var qqmapsdk = new QQMapWX({
  key: '你申请的地图Key' // 必填
});

Page({
  data: {
    mapCtx: "",
    markers: [],
    poi: {},
    showLocation: false,
    coordType: '5',
    center_longitude: "",
    center_latitude: ""
  },
  //展示经纬度输入框
  showLocation() {
    this.setData({ showLocation: true })
  },
  //隐藏经纬度输入框
  onCloseLocation() {
    this.setData({ showLocation: false })
  },
  //坐标类型change
  coordOnChange(event) {
    this.setData({
      coordType: event.detail
    });
  },
  //坐标radio的click
  coordOnClick(event) {
    this.setData({
      coordType: event.currentTarget.dataset.name
    });
  },
  //表单提交
  formSubmit(e) {
    this.onCloseLocation()
    this.parseAddress(this.data.center_longitude, this.data.center_latitude, this.data.coordType)
  },
  /**地图点击事件*/
  mapChange(e) {
    let that = this
    console.log("change事件", e)
    that.parseAddress(e.detail.longitude, e.detail.latitude)
  },
  /**地图点击移动*/
  moveToLocation(longitude, latitude) {
    var that = this
    //this.parseAddress(longitude, latitude)
    this.mapCtx.moveToLocation({
      longitude: longitude,
      latitude: latitude,
      success(res) {
        console.log("移动成功", res)
      },
      fail(f) {
        console.log("移动失败", res)
      }
    })
  },
  /**重新定位*/
  moveToNow() {
    var that = this
    wx.getLocation({
      type: 'gcj02',
      success(res) {
        that.parseAddress(res.longitude, res.latitude)
      },
      fail(f) {
        console.log('获取经纬度失败', f)
        util.msg("n", "获取经纬度失败,请检查定位是否开启!")
      }
    })
  },
  /**第一次进入*/
  first(e) {
    var that = this
    wx.getLocation({
      type: 'gcj02',
      success(res) {
        that.parseAddress(res.longitude, res.latitude)
      },
      fail(f) {
        console.log('获取经纬度失败', f)
        util.msg("n", "获取经纬度失败,请检查定位是否开启!")
      }
    })
  },
  /**解析地址*/
  parseAddress(longitude, latitude, coordType = '5') {
    var _this = this
    qqmapsdk.reverseGeocoder({
      //位置坐标,默认获取当前位置,非必须参数
      location: {
        latitude: latitude,
        longitude: longitude
      },
      coord_type: coordType,
      success(res) {//成功后的回调
        console.log("解析成功", res);
        var res = res.result;
        var mks = [];
        //当get_poi为0时或者为不填默认值时,检索目标位置,按需使用
        mks.push({ // 获取返回结果,放到mks数组中
          title: res.address,
          id: 0,
          latitude: res.location.lat,
          longitude: res.location.lng,
          iconPath: '../../images/icon/localtion.png',//图标路径 
          width: 30,
          height: 30,
          // callout: { //在markers上展示地址名称,根据需求是否需要
          //   content: res.address,
          //   color: '#000',
          //   display: 'ALWAYS'
          // }
        });
        _this.setData({
          markers: mks,
          poi: {
            latitude: res.location.lat,
            longitude: res.location.lng,
          }
        });
        _this.moveToLocation(res.location.lng, res.location.lat)
      },
      fail(error) {
        console.error('地址解析错误', error, longitude, latitude);
      }
    })
  },
  /**生命周期函数--监听页面加载*/
  onLoad(options) {
    this.mapCtx = wx.createMapContext('myMap')
    this.first()
  },
  /** 生命周期函数--监听页面隐藏*/
  onHide() {

  },
  /**生命周期函数--监听页面卸载*/
  onUnload() {

  },
  /**页面相关事件处理函数--监听用户下拉动作*/
  onPullDownRefresh() {

  }
})

json

{
  "usingComponents": {
    "van-field": "/vant/field/index",
    "van-button": "/vant/button/index",
    "van-popup": "/vant/popup/index",
    "van-radio-group": "/vant/radio-group/index",
    "van-radio": "/vant/radio/index",
    "van-row": "/vant/row/index",
    "van-col": "/vant/col/index",
    "van-cell": "/vant/cell/index"
  },
  "navigationBarTitleText": "定位服务"
}

wxml

<view>
  <van-cell title="当前地址:{{ markers[0].title }}" />
  <van-row>
    <van-col span="12">
      <van-cell title="经度:{{ poi.longitude }}" />
    </van-col>
    <van-col span="12">
      <van-cell title="纬度:{{ poi.latitude }}" />
    </van-col>
  </van-row>

  <view class="button_view">
    <van-button custom-class="submit_location" type="info" plain bind:click="moveToNow">重新定位</van-button>
    <van-button custom-class="submit_location" type="info" plain bind:click="showLocation">手动输入</van-button>
  </view>
</view>

<!-- 弹出层 -->
<van-popup custom-class="form_popup" show="{{ showLocation }}" bind:close="onCloseLocation" round="true">
  <view class="form">
    <van-radio-group value="{{ coordType }}" bind:change="coordOnChange">
      <van-row>
        <van-col span="12">
          <van-cell title="腾讯坐标" clickable data-name='5' bind:click="coordOnClick">
            <van-radio slot="right-icon" name='5' />
          </van-cell>
        </van-col>
        <van-col span="12">
          <van-cell title="GPS坐标" clickable data-name='1' bind:click="coordOnClick">
            <van-radio slot="right-icon" name='1' />
          </van-cell>
        </van-col>
      </van-row>
    </van-radio-group>

    <van-field type="digit" label="经度:" title-width="43px" model:value="{{ center_longitude }}" clearable />
    <van-field type="digit" label="纬度:" title-width="43px" model:value="{{ center_latitude }}" clearable />
    <view class="submit_button">
      <van-button custom-class="button" type="info" bindtap="formSubmit">提交</van-button>
    </view>
  </view>
</van-popup>

<!--地图容器-->
<!--longitude及latitude为设置为调转到指定坐标位置,默认不显示-->
<map class="map" id="myMap" markers="{{markers}}" longitude="{{poi.longitude}}" latitude="{{poi.latitude}}" scale='16' bindpoitap="mapChange" bindtap="mapChange" show-scale="true" show-compass="true" show-location="true">
</map>

wxss

.button_view {
  text-align: center;
  margin: 10px 0px 10px 0px;
  width: 100%;
  display: flex;
  justify-content: space-around;
}

.submit_location {
  width: 150px;
}

.form_popup {
  width: 80%;
}

.form {
  margin: 10px;
}

.submit_button {
  margin-top: 10px;
  text-align: center;
}

.submit_button .button {
  height: 30px;
  width: 80%;
}

.map {
  position: absolute;
  top: 153px;
  width: 100%;
  height: 75%;
}
如何为微信小程序添加定位导航和地图标注功能
wx_linying1029的博客
07-30 898
以上就是为微信小程序添加定位导航和地图标注功能的代码示例。通过这些代码,可以实现在小程序使用地图组件来显示当前位置、固定点标注以及可拖动标记等功能。通过调用微信地图相关的API,还能实现导航功能。为微信小程序添加定位导航和地图标注功能可以通过使用微信小程序地图组件和相关API来实现。数组中的每个对象代表一个标记点,可以设置标记的经纬度、标题、图标以及气泡样式。可以使标记点可拖动,同时还可以根据用户拖动的位置显示标记点的经纬度信息。是地图上显示的标记,可以通过添加更多的。方法,打开微信内置地图导航。
微信小程序地图制作
08-19
微信小程序地图制作 小程序开发 地图制作,源码下载 ,
微信小程序实现定位功能
最新发布
yodoyskts的博客
08-22 1173
这个能返回一个稍微有点偏差的,我的偏差大概是在4公里这样,但是真机调试的时候没那么大。我也查阅了大量资料发现现在确实是有这个问题而且没有太好的解决办法,大家可以跟领导说一下这个问题,作为一个前端这些问题一定要及时反馈。可以看到用户可以自己去选择地址,如果应用场景是打卡什么的就不建议用这种了,下面是控制台打印的内容。可以看到这个自选的地址还是很精准的,大家可以根据情况来选择适合自己的定位。分享两个微信小程序获取定位的办法,用的腾讯的地图,可根据自己的情况改动。这是打印的值,大家可以参考一下。
微信小程序地图
青烟小生的博客
07-19 6978
微信小程序地图 简介 ​ 腾讯位置服务为微信小程序提供了基础的标点能力、线和圆的绘制接口等地图组件和位置展示、地图选点等地图API位置服务能力支持,使得开发者可以自由地实现自己的微信小程序产品。 在此基础上,腾讯位置服务微信小程序JavaScript SDK是专为小程序开发者提供的LBS数据服务工具包,可以在小程序中调用腾讯位置服务的POI检索、关键词输入提示、地址解析、逆地址解析、行政区划和距离计算等数据服务,让您的小程序更强大! 操作: 申请开发者密钥(key):申请密钥 开通webse
定位地图小程序
weixin_30708329的博客
04-13 179
导读: 最近做了一个小程序模仿GPS,实现的基本功能有定位,地点查找,与导航等等,主要涉及到编码与反编码,(还有就是系统自己的)听着很麻烦,其实当自己理解了发现也不是那么难。废话也不多说。涉及到的函数根据代码来介绍。 我们先看看Main.storyboard,下图所示,结构非常简单,几个button,text,一个mapview。 介绍一下这个几个按钮的作用: 编码:就...
微信小程序怎么使用地图
qq_60504665的博客
06-28 483
微信小程序使用地图功能时,主要涉及地图组件的引入、配置以及相关的API调用。
微信小程序·简单MAP地图
HUSBANDL的博客
07-03 291
到此,简单版微信小程序地图已完成。
微信小程序 地图定位 地图定位 (源代码+截图)
06-21
微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图定位 (源代码+截图)微信小程序 地图定位 地图...
微信小程序 小程序地图定位 (源码)
05-31
微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小程序 小程序地图定位 (源码)微信小...
微信小程序 地图定位 滴滴作业 (源代码+截图)
06-21
微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴作业 (源代码+截图)微信小程序 地图定位 滴滴...
微信小程序打卡定位签到系统源代码,利用微信小程序地图组件获取到用户的地理位置信息,再通过腾讯地图 SDK 获取到对应位置信息
01-11
1. **微信小程序地图组件** 微信小程序提供了丰富的API接口,其中地图组件(wx.createMapContext)是实现定位签到的关键。通过调用地图组件,开发者可以在小程序中展示地图,并获取用户当前位置。地图组件支持缩放...
微信小程序地图Demo
10-07
微信小程序地图Demo,帮助您更好的学习微信小程序,希望对你学习小程序起到作用
微信小程序开发demo-地图定位
10-29
微信小程序开发demo-地图定位wx.getLocation接口,测试时获取的经纬度一直不变 版本信息: 微信web开发者工具 v0.10.101100
小程序地图定位
03-26
小程序 地图定位,刚接触小程序的朋友可以看看,照着例子学习比较容易接受。
微信小程序源码(含截图)小程序地图定位
05-19
微信小程序源码(含截图)小程序地图定位微信小程序源码(含截图)小程序地图定位微信小程序源码(含截图)小程序地图定位微信小程序源码(含截图)小程序地图定位微信小程序源码(含截图)小程序地图定位微信小程序...
微信小程序(五)地图
m0_69270256的博客
12-18 5353
作者开发《目的地到了》需要满足用户选取地址作为目的地的需求,所以需要使用地图。作者用的是腾讯地图,这里介绍下技术实现。
微信小程序自带地图_微信小程序开发之之地图功能(map)
weixin_39607447的博客
12-19 3986
本文将带你了解微信小程序开发之之地图功能(map),希望本文对大家学微信有所帮助。主要介绍微信小程序中的地图模块相关功能。基本使用地图组件使用起来也很简单。.wxml1212参数列表及说明如下:除了显示基本地图,还可以在地图上添加markers–标注,polyline–折线,circles–圆形,controls–控件。markersdata: {//markers: [{iconPath: ...
微信小程序实现地图定位
lwx33912138的博客
02-27 5227
简单实现微信小程序地图定位 wx.getLocation wx.openLocation
微信小程序:轻松掌握地图定位技能
热门推荐
希望看完文章的你能够带着答案离开
12-24 2万+
微信小程序:轻松掌握地图定位技能
写文章

热门文章

  • 小程序连接MQTT进行通信(保证能用) 16420
  • Navicat无法连接服务器数据库的解决方法 13023
  • docker安装nginx并配置ssl证书 7837
  • mysql配置局域网访问 6285
  • springboot设置局域网访问 5821

分类专栏

  • 前端 11篇
  • python 1篇
  • 小程序 5篇
  • springboot 5篇
  • java 6篇
  • Flutter 8篇
  • php 7篇
  • 运维 1篇
  • rust 2篇
  • GIT 1篇
  • thinkphp 2篇
  • 移动端 2篇
  • nginx 2篇
  • 数据库 2篇
  • mysql 1篇

最新评论

  • 小程序连接MQTT进行通信(保证能用)

    落华X: 不能用,报了什么错吗?小程序开发者调试打开看下

  • 小程序连接MQTT进行通信(保证能用)

    saxxml: 测试工具可以正常连接

  • 小程序连接MQTT进行通信(保证能用)

    saxxml: 合法域名配置了

  • 小程序连接MQTT进行通信(保证能用)

    落华X: 小程序后台配置mqtt地址没?

  • 小程序连接MQTT进行通信(保证能用)

    saxxml: 小程序本地调试可以,上线后就不能使用了

大家在看

  • 高级C语言5-缓冲区
  • 身为程序员的你,卷到最后剩下了什么?35岁从互联网大厂程序员转行成为一名网络安全工程师的心路历程
  • 【开题报告】基于django+vue旅游景点管理系统的设计与实现(论文+源码)计算机毕业设计
  • 大模型推理框架选型调研 721
  • uniapp图片上传功能前后端代码(java)

最新文章

  • 前端实现视频播放添加水印
  • Python使用Rembg库去除图片背景
  • vue3使用高德地图
2024年11篇
2023年22篇
2022年15篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司盐城网站建设优化案例闵行区公司官方网站优化排名松江网站优化有效吗安庆企业网站优化哪家服务好网站快速优化认可易速达杭州行业网站优化价格玉田网站优化网站优化什么牌子好南宁哪里有网站seo优化宁波网站优化零售价格洪梅企业网站优化昭通怎么优化网站即墨网站优化哪家专业淘宝网站优化总结皇姑区网站建设优化价格临城县网站优化公司把网站权重优化到3石排服装网站优化怎么做聊城网站优化费用平坝网站优化推广价格网站优化360台山市网站优化排名怎么网站seo优化医疗网站如何写优化效果北戴河新区网站seo优化排名网站的优化的效果企业网站基础优化网站排名优化推选火31星网站优化seo求职信重庆网站排名优化报价香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化