微信小程序开发之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 相关文章推荐
Safari5中alert的无限循环BUG
Apr 07 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
Aug 03 Javascript
js内存泄露的几种情况详细探讨
May 31 Javascript
js实现的标题栏新消息闪烁提示效果
Jun 06 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
利用node.js搭建简单web服务器的方法教程
Feb 20 Javascript
js实现百度登录框鼠标拖拽效果
Mar 07 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
Aug 31 Javascript
详解微信小程序图片地扯转base64解决方案
Aug 18 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
python实现将元祖转换成数组的方法
2015/05/04 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
谈谈python中GUI的选择
2018/03/01 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
Python常用编译器原理及特点解析
2020/03/23 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
使用Python封装excel操作指南
2021/01/29 Python
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
大学生个人自荐信样本
2014/03/02 职场文书
会计岗位职责范本
2014/03/07 职场文书
单位委托书范本
2014/04/04 职场文书
公司承诺书格式
2014/05/21 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
生活小常识广播稿
2014/09/16 职场文书
结婚幸福感言
2015/08/01 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
SQLServer常见数学函数梳理总结
2022/08/05 MySQL
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS