微信小程序地图(map)组件点击(tap)获取经纬度的方法


Posted in Javascript onJanuary 10, 2019

微信小程序中使用地图(map)组件,通过点击(tap)获取经纬度,按照官方的回应,暂时是没法做到的,从地图组件API多有残缺判断,怀疑是个实习生干的...

做个变通,适用性有限,请大家参考。基本思路就是在地图上铺满一层marker,从而通过点击marker获得经纬度。

<map id="map" longitude="102.324520" latitude="40.099994" scale="4" bindcontroltap="controltap" polygons="{{polygons}}" bindregionchange="regionchange" markers="{{markers}}" bindmarkertap="markertap" show-location style="width: 100%; height: 700px;"></map>
const app = getApp()

const markersize = 30

function range(start, edge, step) {
 for (var ret = [];
  (edge - start) * step > 0; start += step) {
  ret.push(start);
 }
 return ret;
}

function markers(northeast, southwest, scale, width, height) {

 const markerslng = (northeast.longitude - southwest.longitude) * markersize / width
 const markerslat = (northeast.latitude - southwest.latitude) * markersize / height

 const maxlon = northeast.longitude
 const minlon = southwest.longitude
 const maxlat = northeast.latitude
 const minlat = southwest.latitude

 const lons = range(minlon, maxlon, markerslng)
 const lats = range(minlat, maxlat, markerslat)

 let _markers = []
 lons.forEach((lon, i) => {
  lats.forEach((lat, j) => {
   _markers.push({
    id: lon + ',' + lat,
    latitude: lat,
    longitude: lon,
    iconPath: '/marker.png',
    alpha: 0.1, //将图片设置为透明,通过开发者工具看不出效果,但真机是有效果的
    width: markersize,
    height: markersize
   })
  })
 })
 return _markers
}

Page({
 data: {
  polygons: [],
  controls: [{
   id: 1,
   position: {
    left: 0,
    top: 300 - 50,
    width: 50,
    height: 50
   },
   clickable: true
  }],
  markers: []
 },
 createMarkers() {

  this.mapCtx = wx.createMapContext('map')
  const query = wx.createSelectorQuery()
  const map = query.select('#map').boundingClientRect()

  let that = this

  that.mapCtx.getRegion({
   success(res1) {
    that.mapCtx.getScale({
     success(res2) {
      query.exec((res) => {
       let width = res[0].width;
       let height = res[0].height;
       let _markers = markers(res1.northeast, res1.southwest, res2.scale, width, height)
       that.data.markers = _markers
       that.setData(that.data)
      })
     }
    })
   }
  })
 },
 regionchange(e) {
  this.createMarkers()
 },
 markertap(e) {
  console.log(e.markerId)
 },
 controltap(e) {
  console.log(e.controlId)
 },
 onReady(e) {
  this.createMarkers()
 }
})

效果如图

微信小程序地图(map)组件点击(tap)获取经纬度的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
Jan 17 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
Mar 26 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
Feb 25 Javascript
省市二级联动小案例讲解
Jul 24 Javascript
简单实现js倒计时功能
Feb 13 Javascript
微信小程序新增的拖动组件movable-view使用教程
May 20 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
JSON 入门教程基础篇 json入门学习笔记
Sep 22 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
Oct 01 Javascript
vue选项卡切换的实现案例
Apr 11 Vue.js
最简单的JS实现json转csv的方法
Jan 10 #Javascript
puppeteer实现html截图的示例代码
Jan 10 #Javascript
其实你可以少写点if else与switch(推荐)
Jan 10 #Javascript
微信小程序提取公用函数到util.js及使用方法示例
Jan 10 #Javascript
浅谈JavaScript 代码简洁之道
Jan 09 #Javascript
react组件从搭建脚手架到在npm发布的步骤实现
Jan 09 #Javascript
微信小程序公用参数与公用方法用法示例
Jan 09 #Javascript
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
php object转数组示例
2014/01/15 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
Dom与浏览器兼容性说明
2010/10/25 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
vue的diff算法知识点总结
2018/03/29 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Python实现购物车功能的方法分析
2017/11/10 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
《悯农》教学反思
2014/04/28 职场文书
售房协议书
2014/08/19 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python