微信小程序 使用腾讯地图SDK详解及实现步骤


Posted in Javascript onFebruary 28, 2017

微信小程序 使用腾讯地图SDK详解及实现步骤

 近期在做一款彩票服务类项目中用到了腾讯地图提供的小程序解决方案,拿来给大家分享一下!

使用起来非常简单,就是一些功能还有待完善。

官方文档:http://lbs.qq.com/qqmap_wx_jssdk/index.html

步骤:

  1. 申请开发者密钥(key):申请密匙
  2. 下载微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.0
  3. 安全域名设置,需要在微信公众平台添加域名地址https://apis.map.qq.com
  4. 小程序示例
// 引入SDK核心类
var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
var qqmapsdk;
Page({
 onLoad: function () {
   // 实例化API核心类
   qqmapsdk = new QQMapWX({
     key: '申请的key'
   });
 },
 onShow: function () {
   // 调用接口
   qqmapsdk.search({
     keyword: '彩票',
     success: function (res) {
       console.log(res);
     },
     fail: function (res) {
       console.log(res);
     },
   complete: function (res) {
     console.log(res);
   }
 });
})

结果效果图:

微信小程序 使用腾讯地图SDK详解及实现步骤

去购彩.png

5.核心类

5.1 地点搜索search(options:Object)

通过关键词keyword搜索周边poi,比如“酒店”“餐饮”“娱乐”“学校”等

去购彩界面的实现:

5.1.1 buy.js

// 引入腾讯地图SDK核心类
var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
var util = require("../../utils/util.js");
var qqmapsdk;
Page({
 data: {
resData: []
 },
 onLoad: function (options) {

// 实例化腾讯地图API核心类

qqmapsdk = new QQMapWX({

 key: 'HPNBZ-B426V-CZQPP-UN4R6-QYOF2-MYFU3'//此处使用你自己申请的key

});
 },
 onShow: function () {

var that = this;

// 腾讯地图调用接口

qqmapsdk.search({

 keyword: '彩票',

 page_size: 20,

 success: function (res) {


console.log(res);


var resData = res.data;


for (var i = 0; i < resData.length; i++) {


 resData[i]._distance = util.formatDistance(resData[i]._distance);//转换一下距离的格式


}


that.setData({resData: resData});

 },

 fail: function(res) {


console.log(res);

 },

 complete: function(res) {


console.log(res);

 }

})
 }
})
// utils/util.js
/**
* 将距离格式化
* <1000m时 取整,没有小数点
* >1000m时 单位取km,一位小数点 
*/
function formatDistance(num) {
 if (num < 1000) {
return num.toFixed(0) + 'm';
 } else if (num > 1000) {

return (num / 1000).toFixed(1) + 'km';
 }
}

5.1.2 buy.wxml 主要样式采用weui

<view class="page">
<view wx:for="{{resData}}" wx:key="shop" class="page__bd">
 <view bindtap="navTo" data-item="{{item}}">
  <view class="weui-panel">
   <view class="weui-panel__bd">
    <view class="weui-media-box weui-media-box_text">
     <view class="weui-media-box__title weui-media-box__title_in-text">{{item.title}}</view>
     <view class="weui-media-box__desc">{{item.address}}</view>
     <view class="weui-media-box__info">
      <view class="weui-media-box__info__meta">电话:{{item.tel}}</view>
      <view class="weui-media-box__info__meta weui-media-box__info__meta_extra">距离:{{item._distance}}</view>
     </view>
    </view>
   </view>
  </view>
 </view>
</view>
</view>

5.2 关键词输入提示getSuggestion(options:Object)

用于获取输入关键字的补完与提示,帮助用户快速输入。

示例:

// 调用接口
qqmapsdk.getSuggestion({
 keyword: '技术',
 success: function(res) {
   console.log(res); 
 },
 fail: function(res) {
   console.log(res);
 },
 complete: function(res) {
   console.log(res);
 }
});

5.3 距离计算calculateDistance(options:Object)

计算一个点到多点的步行、驾车距离。

示例:

// 调用接口
qqmapsdk.calculateDistance({
 mode: 'walking';//步行,驾车为'driving'
 to:[{
   latitude: 39.984060,
   longitude: 116.307520
 }, {
   latitude: 39.984572,
   longitude: 116.306339
 }],
 success: function(res) {
   console.log(res);
 },
 fail: function(res) {
   console.log(res);
 },
 complete: function(res) {
   console.log(res);
 }
});

5.4 另外还有以下功能,就不一一演示了。

  1. getCityList(options:Object):获取全国城市列表数据;
  2. getDistrictByCityId(options:Object):通过城市ID返回城市下的区县;
  3. reverseGeocoder(options:Object):用于获取输入关键字的补完与提示,帮助用户快速输入
  4. geocoder(options:Object):提供由地址描述到所述位置坐标的转换,与逆地址解析reverseGeocoder()的过程正好相反。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
ExtJS 简介 让你知道extjs是什么
Dec 29 Javascript
JavaScript制作简易的微信打飞机
Mar 31 Javascript
Javascript变量的作用域和作用域链详解
Apr 02 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 Javascript
微信小程序 picker-view 组件详解及简单实例
Jan 10 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
解决layui表格的表头不滚动的问题
Sep 04 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 Javascript
JS如何寻找数组中心索引过程解析
Jun 01 Javascript
Vue.js父与子组件之间传参示例
Feb 28 #Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 #Javascript
JS对象创建的几种方式整理
Feb 28 #Javascript
js仿淘宝评价评分功能
Feb 28 #Javascript
jQuery布局组件EasyUI Layout使用方法详解
Feb 28 #Javascript
three.js绘制地球、飞机与轨迹的效果示例
Feb 28 #Javascript
JavaScript Uploadify文件上传实例
Feb 28 #Javascript
You might like
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
JS 常用校验函数
2009/03/26 Javascript
js href的用法
2010/05/13 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
React快速入门教程
2017/01/17 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
vue配置请求本地json数据的方法
2018/04/11 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
老师自我鉴定范文
2013/12/25 职场文书
一夜的工作教学反思
2014/02/08 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
初中生毕业评语
2014/12/29 职场文书
明星邀请函
2015/02/02 职场文书
护林员个人总结
2015/03/04 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书