微信小程序开发之map地图实现教程


Posted in Javascript onJune 08, 2017

前言

微信小程序地图操作比较简单,api也很少,使用map组件来展示。说到地图,那就先来看基础定位:

定位用到wx.getLocation(OBJECT)函数,代码如下:

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

定位成功会返回四个参数值,如下:

微信小程序开发之map地图实现教程

map属性太多,先看一下:

微信小程序开发之map地图实现教程

如果用到地图,基本上所有属性都会用到。

下面一一看一下,我们先看效果图吧,先看真相:

微信小程序开发之map地图实现教程

这里我只用了一个markers,就是定位当前位置的红色markers,用法如下:

wx.getLocation({
  type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
  success: function (res) {

  _this.setData({
   latitude: res.latitude,
   longitude: res.longitude,
   markers: [{
   id: "1",
   latitude: res.latitude,
   longitude: res.longitude,
   width: 50,
   height: 50,
   iconPath: "/assests/imgs/my.png",
   title: "哪里"

   }],
   circles: [{
   latitude: res.latitude,
   longitude: res.longitude,
   color: '#FF0000DD',
   fillColor: '#7cb5ec88',
   radius: 3000,
   strokeWidth: 1
   }]

  })
  }

 })

这里加了circles,半径是3000米,具体的api可自行看官网。

接下来看看controls,控制层,在地图上显示控件,控件不随着地图移动,看API:

微信小程序开发之map地图实现教程

注意看示例图的右上角,有两个按钮,加减号,是控制地图scale的数值变化,动态缩放地图的,controls用法也很简单:

controls: [{
  id: 1,
  iconPath: '/assests/imgs/jian.png',
  position: {
  left: 320,
  top: 100 - 50,
  width: 20,
  height: 20
  },
  clickable: true
 },
 {
  id: 2,
  iconPath: '/assests/imgs/jia.png',
  position: {
  left: 340,
  top: 100 - 50,
  width: 20,
  height: 20
  },
  clickable: true
 }
 ]

最后我们看一张gif图:

微信小程序开发之map地图实现教程

最后上一下具体代码:

wxml:

<map id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="{{scale}}" controls="{{controls}}" bindcontroltap="controltap" markers="{{markers}}" circles="{{circles}}" bindmarkertap="markertap" polyline="{{polyline}}" bindregionchange="regionchange" show-location style="width: 100%; height: {{view.Height}}px;"></map>

js:

Page({
 data: {
 Height: 0,
 scale: 13,
 latitude: "",
 longitude: "",
 markers: [],
 controls: [{
  id: 1,
  iconPath: '/assests/imgs/jian.png',
  position: {
  left: 320,
  top: 100 - 50,
  width: 20,
  height: 20
  },
  clickable: true
 },
 {
  id: 2,
  iconPath: '/assests/imgs/jia.png',
  position: {
  left: 340,
  top: 100 - 50,
  width: 20,
  height: 20
  },
  clickable: true
 }
 ],
 circles: []

 },

 onLoad: function () {
 var _this = this;

 wx.getSystemInfo({
  success: function (res) {
  //设置map高度,根据当前设备宽高满屏显示
  _this.setData({
   view: {
   Height: res.windowHeight
   }

  })



  }
 })

 wx.getLocation({
  type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标
  success: function (res) {

  _this.setData({
   latitude: res.latitude,
   longitude: res.longitude,
   markers: [{
   id: "1",
   latitude: res.latitude,
   longitude: res.longitude,
   width: 50,
   height: 50,
   iconPath: "/assests/imgs/my.png",
   title: "哪里"

   }],
   circles: [{
   latitude: res.latitude,
   longitude: res.longitude,
   color: '#FF0000DD',
   fillColor: '#7cb5ec88',
   radius: 3000,
   strokeWidth: 1
   }]

  })
  }

 })

 },

 regionchange(e) {
 console.log("regionchange===" + e.type)
 },

 //点击merkers
 markertap(e) {
 console.log(e.markerId)

 wx.showActionSheet({
  itemList: ["A"],
  success: function (res) {
  console.log(res.tapIndex)
  },
  fail: function (res) {
  console.log(res.errMsg)
  }
 })
 },

 //点击缩放按钮动态请求数据
 controltap(e) {
 var that = this;
 console.log("scale===" + this.data.scale)
 if (e.controlId === 1) {
  // if (this.data.scale === 13) {
  that.setData({
  scale: --this.data.scale
  })
  // }
 } else {
  // if (this.data.scale !== 13) {
  that.setData({
  scale: ++this.data.scale
  })
  // }
 }


 },


})

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于JQuery的日期联动实现代码
Feb 24 Javascript
JS去除字符串两端空格的简单实例
Dec 27 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 Javascript
jquery判断密码强度的验证代码
Apr 22 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
May 16 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
Apr 13 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
Jun 04 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 Javascript
Express进阶之log4js实用入门指南
Feb 10 Javascript
js事件触发操作实例分析
Jun 21 Javascript
在layui.use 中自定义 function 的正确方法
Sep 16 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 #Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 #Javascript
微信小程序开发之toast等弹框提示使用教程
Jun 08 #Javascript
javascript实现二叉树遍历的代码
Jun 08 #Javascript
微信小程序tabbar不显示解决办法
Jun 08 #Javascript
javascript实现二叉树的代码
Jun 08 #Javascript
微信小程序搜索组件wxSearch实例详解
Jun 08 #Javascript
You might like
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
在视频前插入广告
2006/11/20 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
python使用mysql数据库示例代码
2017/05/21 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
对python中Json与object转化的方法详解
2018/12/31 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python的依赖管理的实现
2019/05/14 Python
pyspark 随机森林的实现
2020/04/24 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
毕业生就业自荐书
2013/12/15 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
中学推普周活动总结
2015/05/07 职场文书
教育读书笔记
2015/07/02 职场文书
企业法律事务工作总结
2015/08/11 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS