实现效果

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

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

点击地址选择地点

选择地点之后

源码实现

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

视图 index.wxml

index.wxml:

{{address}}

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列表。具体的使用方法参见官网,这里就不做赘述了,官网地址:

onChangeAddress: function (e) {

wx.navigateTo({

url: "/pages/position/position"

});

}

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

position.wxml:

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. 微信小程序获取带表情的微信名乱码问题

    微信小程序获取带表情的微信名乱码问题 在后台获取完微信用户数据后,对微信名进行UTF-8编码 URLEncoder.encode(nickName, "utf-8") ,将编码后的 ...

  2. uniapp —— 小程序实现带参分享微信、朋友圈以及调试获取参数

    uniapp -- 小程序实现带参分享微信.朋友圈以及调试获取参数 零.起因以及分类 小程序 我们在开发微信小程序的过程中,经常需要实现分享给微信用户或者分享到微信朋友圈的功能,基本上我们会用到 on ...

  3. w10自动删除文件怎么关了_绝地求生怎么删除新地图_删新沙漠地图文件办法

    绝地求生怎么删除新地图?对于这张沙漠地图来说,很多玩家都不喜欢,大家都觉得掩体太少了,很容易死不好玩,还是比较喜欢老地图,怎么才能删除这张沙漠地图,从而不会匹配到呢?下面安卓市场小编就为各位玩家带来绝 ...

  4. 微信小程序自带地图_微信小程序开发之之地图功能(map)

    本文将带你了解微信小程序开发之之地图功能(map),希望本文对大家学微信有所帮助. 主要介绍微信小程序中的地图模块相关功能.基本使用地图组件使用起来也很简单..wxml 1212参数列表及说明如下:除 ...

  5. 高德地图小程序步行路线显示_微信小程序 高德地图路线规划实现过程详解

    前言 最近项目中做到相关网约车小程序.需要使用到地图中的路线规划,对3种地图进行了分析.这里稍微做一下总结: 百度地图 百度坐标 (BD-09) 腾讯地图 火星坐标(GCJ-02) 高德地图 火星坐标 ...

  6. 高德地图小程序步行路线显示_微信小程序----map路线规划

    声明 bug: 页面脚的步行.骑行.驾车区域在真机测试是会出现不显示问题? 造成原因:在小程序map组件的同一区域,map组件的视图层比普通的文本视图层要高,所以在真机会遮挡! 解决办法:将该文本视图 ...

  7. 高德地图小程序步行路线显示_微信小程序之:小程序接入高德地图SDK

    前言 最近在捣腾小程序,想开发一个自己的小程序,过一把独立开发的瘾. 自己设计,自己搞数据,自己找图标,自己决定要或者不要什么功能,完全跟着心走,目前体验下来,感觉还是蛮爽的.比在公司产品要你做什么你 ...

  8. 不同程序用不同网络_微信小程序直播登场,与平台直播有何不同?

    星标我,不要迷路哦~ 微信小程序直播开启公测了.在直播这个流量阵地里,每一个科技巨头,每一个零售商家,甚至是每一个个体,都渴望借助直播获得新的机遇. 1月中旬,不少商家收到小程序直播的公测邀请,并已交 ...

  9. 程序左上角的字_微信内测7.0.7新版本,小程序迎来大改动!

    最近几个月来,微信就跟打了鸡血一样不断更新了多个版本上线多个新功能.此前7月末,微信安卓7.0.6带来了将收藏笔记,文件预览等页面设为浮窗的功能,目前最多支持5个文档或笔记设为浮窗.这不,距离微信7. ...

最新文章

  1. [c++]引入了头文件和动态库,为什么找不到函数实现
  2. 关于return和exit
  3. 别再叫我“老工”!!!工程师姓什么很重要!
  4. mybatis返回null_面试官:你分析过mybatis工作原理吗?
  5. 互联网晚报 | 1月25日 星期二 | 知乎首次举办上星晚会;微信视频号上线首个付费直播间;淘宝天猫“春节不打烊”活动正式上线...
  6. 说一下安卓的touch事件分发机制
  7. html显示mysql图片路径_MySQL MySQL 直接存储图片并在 html 页面中展示,点击下载 _好机友...
  8. 数据库-使用DataReader的简单实例(两种办法)
  9. JavaScript创建对象几种形式
  10. 安装CentOS步骤
  11. 大型企业能源管理系统的设计与应用
  12. matpower和pandapower数据的转化
  13. 计算机课英语怎么读音标,【英语课堂】48个国际音标表及发音详解图
  14. 什么是CPA、CPC、CPM、CVR、CTR、PV、UV、GMV定义以及相关计算公式
  15. unity简单的脚本 播放3D立体音效(近大远小效果)
  16. 电脑无法进入睡眠的解决方法
  17. JdbcTemplate的增删改查用法
  18. linux根据端口限速,Linux 中限制网络带宽使用trickle或wondershaper
  19. centos7盘符 linux_linux操作系统centos7新加磁盘分区详解
  20. Linux 性能优化的全景指南,都在这一篇里了,建议收藏~

热门文章

  1. 男人“杀”死女人的30句话
  2. python自动化入门操作文档,写得如此清晰明了,忍不住让人点赞
  3. 开挂的印度裔00后:7岁“出道”教编程,12岁成为IBM荣誉顾问
  4. gdc服务器故障输入信号超出范围,H1Z1信号输入超出范围 | 手游网游页游攻略大全...
  5. php修改ini文件内容,php上传大文件需要修改的php.ini配置文件
  6. 地址已在使用 java_java – UDP地址已经在使用?
  7. clr20r3 mysql.data_C# CLR20R3 程序终止的几种解决方案
  8. 挖掘PubMed数据库,获取报道的或推测新的基因调控关系
  9. 参考文献中杂志名字格式混乱问题一次解决
  10. 参考文献自动搜集管理完美攻略(图文版): Latex+Lyx+Zotero