uni-app开发小程序时map地图使用
目录
1.地图显示
uniapp地图显示很简单,使用map组件即可
<map id="map" class="map" :show-location="true" min-scale="3">
以上便能创建地图
show-location:是否显示当前位置坐标
min-scale:限制缩放等级
2.地图添加点位
地图添加点位有两种方式。
1.直接使用markers属性
<map id="map" class="map" :show-location="true" min-scale="3" :markers="markers">
其中markers是个数组需要在data定义。
-
data() {
-
return {
-
markers:[],//点集合
-
mapContext:null
-
}
-
}
加点时我们可以直接在markers中添加对象
-
this.markers.push({
-
id:123,
-
latitude:lat,
-
longitude:lng,
-
width:20,
-
height:20,
-
iconPath:"../../static/menu/recommend.png"
-
})
id必须是数字
这样便可以在地图上添加一个简单的点
marker具体有什么参数,可参考官网
2.使用地图组件控制
使用这个需要先获取map上下文对象,根据id获取
this.mapContext = uni.createMapContext("map", this);
获取对象后便可以使用addMarkers进行添加点位
-
let marker = {
-
id:123,
-
latitude:lat,
-
longitude:lng,
-
width:20,
-
height:20,
-
iconPath:"../../static/menu/recommend.png"
-
}
-
this.mapContext.addMarkers({
-
markers:[marker],
-
fail:()=>{
-
console.log("失败了")
-
}
-
})
具体参数可以看这里
3.marker点击事件
需要在map组件中添加markertap点击事件。
-
<map id="map" class="map" :show-location="true" :markers="markers"
-
@markertap="markertap">
在methods中添加markertap方法,获取点位的相关信息。
-
markertap(marker){
-
-
}
4.移动地图到指定的坐标
-
<map id="map" class="map" :longitude="longitude" :latitude="latitude" :show-location="true"
-
min-scale="3"
-
:markers="markers"
-
@markertap="markertap">
需要在map组件添加 longitude和latitude。
修改longitude和latitude时,地图会自动跳转到指定坐标。
5.监听地图拖拽
-
<map id="map" class="map" :longitude="longitude" :latitude="latitude" :show-location="true"
-
min-scale="3"
-
@regionchange="regionchange"
-
:markers="markers"
-
@markertap="markertap">
-
-
</map>
监听拖拽需要绑定regionchange方法
绑定后不管是地图的拖拽还是缩放都会触发改方法,但是在微信开发者工具中,只有拖拽才会触发,真机调试时缩放和拖拽都会触发。
-
//监听地图拖拽
-
regionchange(data){
-
if(data.type == "end"){
-
-
}
-
}
data.type可以判断拖拽或缩放是否结束。
监听拖拽的作用
若地图需要显示点位,且点位多的时候,一次查询全部,地图渲染会很慢,且数据量大,处理效率会很低。
这样我们可以只显示地图显示范围内的点位,使查询结果减少到屏幕可视范围内的对象,数据量减少,渲染会比较快。
如何获取屏幕的范围?
在监听地图拖拽结束后,可以使用getRegion方法获取对角的坐标,从而可以得出屏幕所显示的最大最小经纬度。
-
//监听地图拖拽
-
regionchange(data){
-
if(data.type == "end"){
-
this.mapContext.getRegion({
-
success:(res)=>{
-
// res.northeast
-
// res.southwest
-
}
-
})
-
}
-
}
mapContext便是第二节获取到的上下文对象。
若并不是显示屏幕范围,而是中心点范围。
可以使用getCenterLocation可以获取拖拽后地图的中心点位。
-
//监听地图拖拽
-
regionchange(data){
-
if(data.type == "end"){
-
this.mapContext.getCenterLocation({
-
success: (res) => {
-
-
}
-
})
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbkeea
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13