微信小程序地图(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 实现在离开页面时提醒未保存的信息(减少用户重复操作)
Jan 16 Javascript
jquery制作select列表双向选择示例代码
Sep 02 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 Javascript
jQuery.datatables.js插件用法及api实例详解
Oct 28 Javascript
websocket+node.js实现实时聊天系统问题咨询
May 17 Javascript
说说node中的可读流和可写流的区别
Jun 01 Javascript
vue select选择框数据变化监听方法
Aug 24 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
Aug 24 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 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
CheckBox 如何实现全选?
2006/06/23 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python遍历numpy数组的实例
2018/04/04 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
详解python datetime模块
2020/08/17 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
计算机网络专业个人的自我评价
2013/10/17 职场文书
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
自荐信范文
2013/12/10 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
音乐幼师求职信
2014/07/09 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
物业接待员岗位职责
2015/04/15 职场文书
美丽人生观后感
2015/06/03 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python
Python经常使用的一些内置函数
2022/04/11 Python