微信小程序地图(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脚本
Aug 04 Javascript
JavaScript 事件查询综合
Jul 13 Javascript
jquery延迟加载外部js实现代码
Jan 11 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
JS动态创建DOM元素的方法
Jun 09 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
php基于redis处理session的方法
Mar 14 Javascript
js实现一键复制功能
Mar 16 Javascript
bootstrap suggest下拉框使用详解
Apr 10 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
Jun 15 Javascript
vue2单元测试环境搭建
May 24 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 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
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
python Celery定时任务的示例
2018/03/13 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
如何把python项目部署到linux服务器
2020/08/26 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
python时间time模块处理大全
2020/10/25 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
抽象类和接口的区别
2012/09/19 面试题
花卉与景观设计系大学生求职信
2013/10/01 职场文书
七夕情人节促销方案
2014/06/07 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
校园运动会广播稿
2015/08/19 职场文书
技术入股协议书
2016/03/22 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android