微信小程序地图(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 相关文章推荐
jquery入门必备的基本认识及实例(整理)
Jun 24 Javascript
详解AngularJS中的表达式使用
Jun 16 Javascript
Angularjs全局变量被作用域监听的正确姿势
Feb 06 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
如何提高Dom访问速度
Jan 05 Javascript
javascript回调函数详解
Feb 06 Javascript
微信小程序中实现手指缩放图片的示例代码
Mar 13 Javascript
validform表单验证的实现方法
Mar 08 Javascript
JavaScript判断对象和数组的两种方法
May 31 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
Vue实现点击显示不同图片的效果
Aug 10 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
PHP Cookie学习笔记
2016/08/23 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
JS onkeypress兼容性写法详解
2016/04/27 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
Python简单实现控制电脑的方法
2018/01/22 Python
python实现多张图片拼接成大图
2019/01/15 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
python 绘制国旗的示例
2020/09/27 Python
女大学生毕业找工作的自我评价
2013/10/03 职场文书
优秀党员转正的自我评价
2013/10/06 职场文书
大学生演讲稿范文
2014/01/11 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
法人代表委托书
2014/04/04 职场文书
社区维稳工作方案
2014/06/06 职场文书
师范毕业生求职信
2014/07/11 职场文书
工程造价专业求职信
2014/07/17 职场文书
会议欢迎词
2015/01/23 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
三八节活动主持词
2015/07/04 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
JavaScript 对象创建的3种方法
2021/11/17 Javascript