微信小程序开发之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 html() in Firefox (uses .innerHTML) ignores DOM changes
Mar 05 Javascript
jquery选择器(常用选择器说明)
Sep 28 Javascript
js取消单选按钮选中并判断对象是否为空
Nov 14 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
Angularjs实现多个页面共享数据的方式
Mar 29 Javascript
JavaScript浮点数及运算精度调整详解
Oct 21 Javascript
canvas实现钟表效果
Feb 13 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
基于vue中对鼠标划过事件的处理方式详解
Aug 22 Javascript
React中Ref 的使用方法详解
Apr 28 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 11 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
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
php判断访问IP的方法
2015/06/19 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python 域名分析工具实现代码
2009/07/15 Python
Python比较两个图片相似度的方法
2015/03/13 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
python判断数字是否是超级素数幂
2018/09/27 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python实现LRU热点缓存及原理
2019/10/29 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
python中random模块详解
2021/03/01 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
几个人围成一圈的问题
2013/09/26 面试题
小区的门卫岗位职责
2014/10/01 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
2014年行政部工作总结
2014/11/19 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
安全生产会议制度
2015/08/06 职场文书