微信小程序地图(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 相关文章推荐
js DOM模型操作
Dec 28 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
Mar 01 Javascript
jQuery插件的写法分享
Jun 12 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
Jan 03 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
JS实现div居中示例
Apr 17 Javascript
显示今天的日期js代码(阳历和农历)
Sep 30 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
简单谈谈js的数据类型
Sep 25 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 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
解决GD中文乱码问题
2007/02/14 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
js实现随机数小游戏
2019/06/28 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
python实现自动登录后台管理系统
2018/10/18 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
会计主管岗位职责范文
2013/11/08 职场文书
结婚邀请函范文
2014/01/14 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python