微信小程序地图(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实现下拉菜单效果的代码
Jul 25 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
jQuery使用height()获取高度需要注意的地方
Dec 13 Javascript
教你如何终止JQUERY的$.AJAX请求
Feb 23 Javascript
JavaScript图像延迟加载库Echo.js
Apr 05 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
Apr 13 Javascript
浅析在javascript中创建对象的各种模式
May 06 Javascript
基于jquery实现图片放大功能
May 07 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
JavaScript设计模型Iterator实例解析
Jan 22 Javascript
小程序自定义轮播图圆点组件
Jun 25 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
javascript 动态添加事件代码
2008/11/30 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
Python实现股市信息下载的方法
2015/06/15 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python如何实现机器人聊天
2020/09/10 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
机电一体化自荐信
2013/12/10 职场文书
大学生党员承诺书
2014/05/20 职场文书
产品委托授权书范本
2014/09/16 职场文书
五年级学生期末评语
2014/12/26 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server