微信小程序地图(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实现的激活输入框后隐藏初始内容
Jun 29 Javascript
根据地区不同显示时间的javascript代码
Aug 13 Javascript
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
jquery自定义滚动条插件示例分享
Feb 21 Javascript
jQuery表格排序组件-tablesorter使用示例
May 26 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
Jquery修改页面标题title其它JS失效的解决方法
Oct 31 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
jQuery焦点图左右转换效果
Dec 12 Javascript
初探js和简单隐藏效果的实例
Nov 23 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
Nov 03 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分页思路以及在ZF中的使用
2012/05/30 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
php开启openssl的方法
2014/05/15 PHP
php跨站攻击实例分析
2014/10/28 PHP
10款实用的PHP开源工具
2015/10/23 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
tensorflow更改变量的值实例
2018/07/30 Python
python Django的web开发实例(入门)
2019/07/31 Python
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
售后服务科岗位职责范文
2013/11/13 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
司机职责范本
2014/03/08 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
写给老师的感谢信
2015/01/20 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS