微信小程序地图(map)组件点击(tap)获取经纬度的方法
作者:舍瓦温 发布时间:2023-09-03 21:33:37
标签:小程序,经纬度
微信小程序中使用地图(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()
}
})
效果如图
来源:https://segmentfault.com/a/1190000017821849


猜你喜欢
- 最近收到一个朋友委托的需求,要将MP3的音频格式转换成wav的音频格式。于是,使用python写了这个小工具便于批量进行转换操作。首先,下载
- 斜角导航条看上去立体感比较强,但实现起来比较麻烦;这是前几天写的一个测试代码,实现时,本来想用简单的图片加负数来实现;但GIF图片对半透明的
- 这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT som
- 1. 什么是Matplotlibmatplotlib是专门用于开发2D图表(包括3D图表),以渐进、交互式方式实现数据可视化。使用pytho
- 关于 pynput pynput 可以监控我们的键盘和鼠标。目前具有此类功能的库有很多,比如 pygame 等游戏库,但是当我们只需要
- 使用pycharm创建新项目,使用虚拟环境,但是进入到项目的cainiao_guoguo_health\venv\Scripts目录启动虚拟
- 前文昨天家里来人,老姐的小孩儿抢着跟我玩电脑,result........很久很久之后!!那你想错了,我可不是欺负小孩子的那种人。老实人本人
- 本文实例为大家分享了python实现批量格式转换的具体代码,供大家参考,具体内容如下深度学习过程中总是绕不开数据集的制作,有时候实际图片格式
- 我来讲解属性部分, 这是相当有用的, 可要认真上课.首先,jquery中对html标签属性进行操作的关键词是 attr .没错,就4个字母,
- 在工作实践和学习中,如何开启 MySQL 数据库的远程登陆帐号算是一个难点的问题,以下内容便是在工作和实践中总结出来的两大步骤,能帮助DBA
- 下面的代码是日期函数的一些简单运用,应该不用解释,生成当月的日历,当然你可以根据实际情况进行扩充!效果图:<%@LANGUAGE=&q
- 前言defer是golang语言中的关键字,用于资源的释放,会在函数返回之前进行调用。一般采用如下模式:f,err := os.Open(f
- 前言大家应该都有所体会,随着硬件层面的发展,linux系统多核已经是普通趋势,而mysql是单进程多线程,所以先天上对多进程的利用不是很高,
- 本文实例为大家分享了jQuery轮播效果展示的具体代码,供大家参考,具体内容如下jQ代码: 在写jQuery代码之前一定要先导库,此处我用的
- 场景:在页面中点击按钮,数量增加,值是存在store中的,点击事件,值没变。<script setup lang="ts&q
- datasets.ImageFolder是PyTorch提供的一个预定义数据集类,用于处理图像数据。它可以方便地将一组图像加载到内存中,并为
- 图像处理工具——灰度直方图灰度直方图时图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率。例子:矩阵图片来自网络,侵删!上
- Pycharm本身并不带编译器,所以第一次用需要自己下载编译器插件。1、首先去 https://www.python.org/downloa
- Python读写文件模式 1、r 打开只读文件,该文件必须存在。 2、r+ 打开可读写的文件,该文件必须存在。 3、w 打开只写文件,若文件
- 导语害!现在是10月份了,国庆过完也降温了——还有几个月就过年了,哦吼~这一年就快过去了,不知道小编带给大家这么多的表白代码都用了没?用了没