实现效果

很多小程序都有如下需求:

小程序打开后,以文字形式显示用户所在位置,如果用户觉得不准,可以打开地图,在地图上自己选择位置,选择完成后,显示的用户的位置会发生变化

点击地址选择地点

选择地点之后

源码实现

下面不仅仅是源码,还希望通过源码尽量讲解小程序的相关知识

视图 index.wxml

index.wxml:

 <view class='address' bindtap='onChangeAddress'>{{address}}</view>

view 组件可用作父容器,也可以用来展示一段文本,text组件也可以用来展示文本,区别在于view中的文本不能选中。

{{}} 是小程序中数据绑定的语法。在小程序中没有 dom 和 bom,所以不能根据id等属性获取控件,只能通过数据绑定的方式。

在index.js 中未变量 addresss 赋值,然后 index.wxml 中就可以自动更新,这与 angular 很像,但是,小程序中是单项绑定。

tap 是一个触摸事件,小程序中使用 bind 或者 catch 方式绑定事件,其属性值是一个函数名称,这个函数在 index.js 中定义,当用户触摸此 view 时就会执行对应的函数

逻辑层 index.js

//引用腾讯地图API
var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
var qqmapsdk;
Page({/*** 页面的初始数据*/data: {address: "",src:""},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {/*判断是第一次加载还是从position页面返回如果从position页面返回,会传递用户选择的地点*/if (options.address != null && options.address != '') {//设置变量 address 的值this.setData({address: options.address});} else {// 实例化API核心类qqmapsdk = new QQMapWX({//此key需要用户自己申请key: 'MNXBZ-G5TWD-GYF42-HHZJL-2W2J3-PVBX4'});var that = this;// 调用接口qqmapsdk.reverseGeocoder({success: function (res) {that.setData({address: res.result.address});},fail: function (res) {//console.log(res);},complete: function (res) {//console.log(res);}});}}

index.js 中的所有代码都应该放在 page 函数中

其中 onLoad 函数是内置函数,大致相当于 js 中的 window.onload 函数。

如果是其他页面跳转过来,并且通过 问号的方式传递参数过来,可以使用 options.参数名称获取对应的值。

qqmapsdk.reverseGeocoder

这里用到了腾讯地图小程序客户端API,上面的函数就是API中的一个,作用是提供由坐标到坐标所在位置的文字描述的转换,输入坐标返回地理位置信息和附近poi列表。具体的使用方法参见官网,这里就不做赘述了,官网地址:点击打开链接

调用成功之后获取地址并赋值给变量 address

这里要注意,必须通过 setData() 函数设置变量的数据,视图中才可以更新

在地图中选择位置

如果用户觉得定位不准,可以点击 位置信息,打开地图页面,代码如下

onChangeAddress: function (e) {wx.navigateTo({url: "/pages/position/position"});}

wx.navigateTo 函数用于跳转到其他页面,可以在url 值后面以 ?参数名=参数值 的方式传递参数

position.wxml:

<view class="page-body"><view class="page-section page-section-gap"><map id="qqMap" style="width: 100%; height: 300px;" latitude="{{latitude}}" longitude="{{longitude}}" show-location></map></view>
</view>

map 是小程序中的组件,用于显示地图信息,属性 latitude 和 longitude 用于设置地图的中心点

下面是 position.js 完整代码

var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
var qqmapsdk;
Page({data: {latitude: 0,//地图初次加载时的纬度坐标longitude: 0, //地图初次加载时的经度坐标name:"" //选择的位置名称},onLoad: function () {// 实例化API核心类qqmapsdk = new QQMapWX({key: 'MNXBZ-G5TWD-GYF42-HHZJL-2W2J3-PVBX4'});this.moveToLocation();   },//移动选点moveToLocation: function () {var that = this;wx.chooseLocation({success: function (res) {    console.log(res.name);    //选择地点之后返回到原来页面wx.navigateTo({url: "/pages/index/index?address="+res.name});},fail: function (err) {console.log(err)}});}
});

wx.chooseLocation 方法,会打开地图,并且默认以用户当前位置为中心点。并且会在下面展示周围一些地点列表,供用户选择,用户选择完地点后,点击 完成,会触发 其 success 参数指定的函数,可以通过参数 res获取地点名称、经纬度等相关信息

在这里,获取当相关信息后跳转到主页,同时将用户选择的位置名称传递过去

在 index.wxml 中,有一段代码用来处理:如果用户在点击 完成 前没有选择任何位置,则继续显示当前位置,否则显示用户选择的位置。

 /*判断是第一次加载还是从position页面返回如果从position页面返回,会传递用户选择的地点*/if (options.address != null && options.address != '') {//设置变量 address 的值this.setData({address: options.address});} else {....}

微信小程序地图上选择位置相关推荐

  1. 微信小程序自带地图_微信小程序地图上选择位置

    实现效果 很多小程序都有如下需求: 小程序打开后,以文字形式显示用户所在位置,如果用户觉得不准,可以打开地图,在地图上自己选择位置,选择完成后,显示的用户的位置会发生变化 点击地址选择地点 选择地点之 ...

  2. 微信小程序--地图上添加图片

    如何在微信小程序地图添加上,添加图片? 在微信小程序中,地图的层级最高,所以我们没有办法,通过定位,在地图上添加图片等信息; 处理办法: 添加控件:controls; 其中有个属性position,进 ...

  3. 微信小程序地图上显示图片,显示定位标记

    地图是我们平时经常用到的组件,而且地图是显示在最高层的原生组件.任何组件都不能遮挡住map的显示,只有特殊的如cover-image等可以显示在地图的上层. <map id="map& ...

  4. 微信小程序地图返回当前位置map,

    功能:点击右下角图标,地图中心点返回当前定位,且缩放为初始缩放值 需要解决的问题: 1.地图上下左右拖动后,点击右下角图标返回当前定位的位置 2.地图缩放大小后,点击右下角图标能返回初始化设置的缩放值 ...

  5. 微信小程序地图上图片放到下面

    效果图 本来是写cover-view 与cover-image 的但是这3个图片弄了半天才弄好这里特意记录一下 实现效果如下 display: flex;flex-direction: row;jus ...

  6. 微信小程序拍照视频上传php,微信小程序-拍照或选择图片并上传文件

    微信小程序-拍照或选择图片并上传文件 调用拍照API:https://mp.weixin.qq.com/debug/wxadoc/dev/api/media-picture.html?t=201612 ...

  7. 【微信小程序】图片选择、转码、压缩、预览、上传,file与base64

    0 前言 微信小程序中,上传图片,如标题,涉及图片选择.图片转码.图片压缩.图片预览.图片上传等 1 图片选择 需要使用微信提供的wx.chooseMedia chooseImage() {var t ...

  8. php小程序地图处理,微信小程序 地图map详解及简单实例

    微信小程序 地图map 微信小程序map 地图属性名类型默认值说明longitudeNumber中心经度 latitudeNumber中心纬度 scaleNumber1缩放级别 markersArra ...

  9. php小程序地图处理,微信小程序地图 map

    微信小程序地图 map 微信小程序map 地图 标记点 标记点用于在地图上显示标记的位置,不能自定义图标和样式 覆盖物 覆盖物用于在地图上显示自定义图标,可自定义图标和样式 地图组件的经纬度必填, 如 ...

最新文章

  1. 如何用photoshop做24色环_如何用Photoshop给照片添加印章水印,内附印章模板素材...
  2. flex java 开发环境搭建_Ubuntu Linux下Flex 4开发环境的搭建
  3. C++matrix chain multiplication矩阵链乘法算法的实现(附完整源码)
  4. python爬斗鱼直播_Python爬取2000万直播数据——看20万游戏主播能否月入100万
  5. CentOs MySQL数据目录迁移
  6. .Net之配置文件自定义
  7. 理论基础 —— 栈 —— 双端栈
  8. Eviews 9.0新版本新功能——预测(Auto-ARIMA预测、VAR预测)
  9. 安规认证的测试项目(工程师必须知道的知识)
  10. 分布式服务框架选型:面对Dubbo,阿里巴巴为什么选择了HSF?
  11. 大学生软件设计大赛文档要求
  12. 【hdu 6045】Is Derek lying?
  13. Linux命令--god
  14. VUE3+Vite开发网易云音乐 Day1 后端环境搭建
  15. 今天Sapphire来短消息问我“一件有点隐私”的事情,:)
  16. 车载毫米波雷达测试方法
  17. halcon脚本-找直线并拟合
  18. python实现经典密码学中列移位算法
  19. python自动翻译pdf_在Python中自动执行PDF
  20. 希腊罗马神话传说和《圣经》中的英语成语典故

热门文章

  1. Python仿手机游戏开发贪吃蛇大作战
  2. 数据库及SQL----常用知识点总结
  3. 【ACWing】260. 买票
  4. Word快速更改文字大小写(转)
  5. windows live mail 启动时报 内存不足或磁盘空间不够
  6. 程序员合同日期不到想辞职_员工 以个人原因,自愿主动辞职的,公司要给经济补偿吗?...
  7. jenkin邮件配置
  8. 为什么php是无法加密的,这个php加密研究不出什么家的高手们 能解决?
  9. yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP)
  10. 成本结构中成本组合的最大数目