更新:

可喜可贺,本篇中奖了

腾讯视频年卡一张,感谢腾讯感谢CSDN!


公司有些业务涉及微信小程序,此前并没有接触过,所以想搞个东西练练手,然后就有了下文。

目录

一、小程序演示

二、开发意图:

三、开发思路:

第一步:要确认用什么形式

第二步:找接口

第三步:确定业务逻辑及页面设计

首页设计:

四、详细开发过程

JS代码:


一、小程序演示

(不要在意小程序的名字,改个名字300块,改不起):

二、开发意图

很多时候我们需要知道某地的行政区划信息或者街道信息,但是往往不知道。

我自己比较常见到的情形就是在各个电商平台填收货地址,就涉及到街道信息,尤其是帮别人填的时候。

三、开发思路

第一步:要确认用什么形式

那肯定就是小程序了。以前觉得小程序是个鸡肋,后来接触多了,越来越觉得小程序的方便性。

第二步:找接口

地图服务提供商就那么几家,做小程序优先考虑腾讯,然后发现腾讯地图有小程序SDK:

在翻看文档的时候就发现有这么一个接口:

这个接口提供由坐标到坐标所在位置的文字描述的转换,输入坐标返回地理位置信息和附近poi列表。

说白了就是传入一个经纬度信息,返回当前点的文字描述。

这,就是我想要的。

但是直接让用户填经纬度,这肯定是SB行为,怎么办?

我平时使用高德地图,最常用的就是搜索和地图选点,如果能让用户直接在地图上选点或者搜索,然后得出经纬度,这个问题不就解决了。

但是,没有找到地图选点这个接口。

继续翻文档,在微信小程序插件里发现了地图选点插件,虽然当时还不了解插件的用法,但是用这个能解决问题,这就足够了。

第三步:确定业务逻辑及页面设计

不搞花里胡哨的,样式选择weui。

首页设计:

当用户首次打开授权位置后即对当前位置进行查询,内容展示在首页,最主要的两条信息行政区划和街道加粗,为什么这两不放在一起?自我感觉放在一起,头重脚轻。

同时提供地图选点功能,此功能来源于腾讯地图选点插件。

用户选点后返回经纬度,使用​逆地址解析接口进行解析。

四、详细开发过程

1、首先注册小程序,我以前有就没重新申请。

2、注册腾讯位置服务开发者

链接如下:

专属邀请码: CWDRFLC

专属邀请链接: https://lbs.qq.com?lbs_invite=CWDRFLC

个人开发者接口调用数是有限额的,免费额度1W,并发数5。

如果想提升限额,有两种方法:

3、根据文档开发

文档写的比较全,很多地方都是例子,不过需要注意以下几个点:

1)reverseGeocoder接口返回数据和文档不一致,需要根据实际返回值编写,另外有些字段在返回值中不一定有,最好用hasOwnProperty进行判断后赋值。

2)实际上文档有点乱,需要查看多个地方的文档。

文档参考地址:

https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html

https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview

你的应用程序是否经常需要获取用户位置信息?是否在某些场合下需要展示地图以及地图上的某些地点?是否需要获取行政区划列表(省市区)?是否需要为在地图上规划一条合理路线?

如果需要快来使用腾讯位置服务吧!

专属邀请码: CWDRFLC

专属邀请链接: https://lbs.qq.com?lbs_invite=CWDRFLC

欢迎关注微信公众号,公众号的好处是可以持续保持联系。

五、JS代码:

//index.js
//获取应用实例
const app = getApp()
const chooseLocation = requirePlugin('chooseLocation');
var QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js');
var qqmapsdk = new QQMapWX({key: '申请的Key'
});Page({data: {recommend:'无地址信息',address:'无地址信息',name:'无区划信息',adcode:'无代码信息',business_area_title:'无商圈信息',crossroad_title:'无路口信息',town:'无街道信息',jingweidu:'无经纬度信息',landmark:'无附近地标',},onShareAppMessage: function (res) {if (res.from === 'button') {// 来自页面内转发按钮console.log(res.target)}return {title: '行政区划、街道信息查询',path: '/page/index/index'}},onShareTimeline: function(){return {title: '行政区划、街道信息查询',}},onLoad: function () {// 实例化API核心类wx.getSetting({success: (res) => {// res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面// res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权// res.authSetting['scope.userLocation'] == true    表示 地理位置授权if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {wx.showModal({title: '请求授权当前位置',content: '需要获取您的地理位置,请确认授权',success: function (res) {if (res.cancel) {wx.showToast({title: '拒绝授权',icon: 'none',duration: 1000})} else if (res.confirm) {wx.openSetting({success: function (dataAu) {if (dataAu.authSetting["scope.userLocation"] == true) {wx.showToast({title: '授权成功',icon: 'success',duration: 1000})//再次授权,调用wx.getLocation的APIthis.getLocation();} else {wx.showToast({title: '授权失败',icon: 'none',duration: 1000})}}})}}})} else if (res.authSetting['scope.userLocation'] == undefined) {//调用wx.getLocation的APIthis.getLocation();}else {//调用wx.getLocation的APIthis.getLocation();}}})},getLocation: function(){var vm = this;wx.getLocation({type:'gcj02',success: function(res){app.globalData.latitude=res.latitude;app.globalData.longitude=res.longitude;vm.getaddressinfo();},fail:function(res){console.log("获取经纬度失败"+JSON.stringify(res))}})},onShow: function(){var vm = this;const location = chooseLocation.getLocation();if(location!=null){app.globalData.latitude=location.latitude;app.globalData.longitude=location.longitude;this.getaddressinfo();}},getaddressinfo: function(){let vm = this;qqmapsdk.reverseGeocoder({location: {latitude:  app.globalData.latitude,longitude: app.globalData.longitude},get_poi: 1, //是否返回周边POI列表:1.返回;0不返回(默认),非必须参数success: function(res) {//成功后的回调var result = res.result;//推荐地址app.globalData.recommend = result.formatted_addresses.recommend;// 行政区划 name    app.globalData.name = result.ad_info.name;//常规地址 address app.globalData.address = result.address;//行政区划代码 adcode app.globalData.adcode = result.ad_info.adcode;if(result.address_reference.hasOwnProperty("business_area")){//商圈 business_area_titleapp.globalData.business_area_title = result.address_reference.business_area.title+" "+result.address_reference.business_area._dir_desc;}if(result.address_reference.hasOwnProperty("crossroad")){//路口 crossroad_titleapp.globalData.crossroad_title = result.address_reference.crossroad.title+" "+result.address_reference.crossroad._dir_desc;}//街道if(result.address_reference.hasOwnProperty("town")){//路口 crossroad_titleapp.globalData.town = result.address_reference.town.title+" "+result.address_reference.town._dir_desc;}if(result.address_reference.hasOwnProperty("landmark_l2")){app.globalData.landmark = result.address_reference.landmark_l2.title;}if(result.address_reference.hasOwnProperty("landmark_l1")){app.globalData.landmark = result.address_reference.landmark_l1.title;}vm.setData({recommend: result.formatted_addresses.recommend,name: result.ad_info.name,address: result.address,adcode: result.ad_info.adcode,business_area_title: app.globalData.business_area_title,crossroad_title: app.globalData.crossroad_title,town: app.globalData.town,jingweidu: result.location.lat+", "+result.location.lng,landmark: app.globalData.landmark,});},fail: function(error) {console.error(error);},complete: function(res) {// console.log(res);}})},onUnload () {// 页面卸载时设置插件选点数据为null,防止再次进入页面,geLocation返回的是上次选点结果chooseLocation.setLocation(null);
},getUserInfo: function(e) {console.log(e)app.globalData.userInfo = e.detail.userInfothis.setData({userInfo: e.detail.userInfo,hasUserInfo: true})},change: function(){const key = '使用在腾讯位置服务申请的key'; const referer = '这是哪'; //调用插件的app的名称const location = JSON.stringify({latitude: app.globalData.latitude,longitude: app.globalData.longitude});const category = '生活服务,娱乐休闲';wx.navigateTo({url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer + '&location=' + location + '&category=' + category});},
})

基于腾讯位置服务,从零设计开发逆地址解析小程序相关推荐

  1. uniapp h5 位置选择,微信定位+腾讯位置服务获取当前地址,逆地址解析

    我的网站:https://green.yuansu.space 一.获取当前地理坐标 首先引入JSSDK npm install jweixin-module --save 使用 var jweixi ...

  2. (后续更新)【微信小程序】毕业设计 租房小程序开发实战,零基础开发房屋租赁系统小程序

    文章目录 说在前面 小程序展示 一.各功能模块介绍 1.房产服务模块 2.个人中心模块 3.动态发布模块 4.订单管理模块 5.房屋评价模块 二.开发环境准备 1.注册微信小程序账号 2.下载微信开发 ...

  3. 基于腾讯位置服务获取IP归属地实践

    本文分析项目中获取外网IP地址以及调用腾讯地图接口获取IP归属地信息. 一.获取IP         Web项目按如下代码可获取IP地址,需注意获取的是外网地址,本地项目返回为空. @Autowire ...

  4. 小程序腾讯位置服务路线规划插件申请方法

    如果用以下常规的方法个人小程序大概率是通过不了的 在腾讯微信公众平台中, "微信小程序官方后台-设置-第三方服务-插件管理" 里点击 "添加插件",搜索 &qu ...

  5. 腾讯位置服务:有何优势?如何使用平台创建应用和服务调用的 Key?

    文章目录 前言 一.腾讯位置服务的优势 1.1.提供丰富的地图产品 1.2.提供行业解决方案 1.3.提供其他生态维度的支持 1.4.海量的数据基础 1.5.丰富的开发文档 二.初识腾讯位置服务 2. ...

  6. “技术让生活更便捷”之腾讯位置服务JavaScript API2.0前端定位和位置标注的开发实录

    文章目录 前言 一.项目需求 1.项目需求 2.需求分解 二.开发实战 1.引入功能库和附件库 2.构建腾讯地图容器 3.调用前端定位组件 1.定位成功回调函数 获取位置坐标显示地图 定义当前位置ma ...

  7. 腾讯位置服务定位组件实现周边公用厕所远近排序分布图

    前言 地图应用非常广泛,目前地图服务,都提供地图操作.标注.地点搜索.出行规划.地址解析.街景等接口,功能非常丰富.在实际开发过程中,各有优劣.本次基于需求,使用腾讯位置服务作为一个公用厕所位置标注的 ...

  8. 发布地图服务属性表_Web3D地图来了!腾讯位置服务正式版发布!

    公众号关注 "菜鸟要飞" 设为 "星标",和10万程序员一起成长! 原文转载自公众号[开发者技术前线] 腾讯位置服务在半年前推出JavaScript API G ...

  9. 国外基于android的系统,基于Android的位置服务系统设计与实现

    摘要: 近年来,随着移动互联网的飞速发展,位置服务已经成为移动增值业务的一个重要发展方向,然而由于现代位置服务应用规模不断扩大,用户和兴趣点的数据急剧增加,降低了周围兴趣点查询服务的实用性.本文通过地 ...

最新文章

  1. 前端开发神器之ngrok
  2. 二元函数洛必达求极限_由一类特殊的洛必达法则情形展开的讨论 ——小领域的大作用...
  3. 最简单的Sublime插件开发教程
  4. sql update 日期减6个月_【干货】SQL基础快速入门
  5. angularJS中,怎么阻止事件冒泡
  6. Linux常用命令(第二版) --文件管理命令
  7. linux-目录结构
  8. 北大青鸟ASP.NET之总结篇
  9. 如何删除 macOS 压缩包中的隐藏文件?
  10. 2021鹏业安装算量软件常见问题整理(三)
  11. 解决winform中的panel重绘闪烁问题
  12. 磁盘碎片对计算机系统的影响,磁盘碎片整理第9遍了|Win7磁盘碎片整理的方法
  13. 深入浅出实时数据库12.8日版
  14. 微信删除的聊天记录怎么恢复,教你两个方法
  15. Telegram APIs中文介绍
  16. (已解决)oracle 查询数据一直提示:“error code [17004]; 无效的列类型”
  17. 2021年中级消防设施操作员(操作与维护),模拟真题及答案
  18. ubuntu删除错误的ATI驱动
  19. 【Beta阶段】Scrum meeting 3
  20. 逻辑推理题(C语言实现)

热门文章

  1. 国产芯片替代-推动ARM服务器芯片-瑞星微3588
  2. 情人节程序员用HTML网页表白【情人节表白网页】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  3. javaScript:操作元素-新浪触碰下拉菜单(3)
  4. PHP 微信支付 JSAPI实战接入
  5. 移动用户和运营商的签约速率
  6. 【原创】【歌曲评论】【之二】【白色风车】
  7. V4L2+QT视频优化策略
  8. 读《小王子三部曲-夜间飞行》有感
  9. 一分钟煮鸡蛋好吃又有营养 - 生活至上,美容至尚!
  10. 关于使用X/Y/Z的方式加载地图Tile瓦片的知识总结