微信小程序地图(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 相关文章推荐
Iframe 自适应高度并实时监控高度变化的js代码
Oct 30 Javascript
js日历功能对象
Jan 12 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
jquery之别踩白块游戏的简单实现
Jul 25 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
详解jQuery事件
Jan 13 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
使用vue实现grid-layout功能实例代码
Jan 05 Javascript
浅谈Postman解决token传参的问题
Mar 31 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
Sep 27 Javascript
最简单的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
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python如何实现int函数的方法示例
2018/02/19 Python
python+opencv识别图片中的圆形
2020/03/25 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
python代码实现猜拳小游戏
2020/11/30 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
大二自我鉴定范文
2013/10/05 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
公民授权委托书范本
2014/09/17 职场文书
先进个人事迹材料
2014/12/29 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
开展警示教育活动总结
2015/05/09 职场文书
新教师教学工作总结
2015/08/12 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫