5***@qq.com
5***@qq.com
  • 发布:2019-05-12 21:57
  • 更新:2022-04-12 08:52
  • 阅读:3010

uni map 地图移动事件获取

分类:uni-app

需求:使用<map>组件 地图 移动地图时 需要获取地图的中心点位置,点标记也要相应移到新的地图中心点位置,这种如何去实现

2019-05-12 21:57 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com - 勤奋能干的码农

同样遇到这个问题,请问解决了吗?

DawnGruel

DawnGruel - 曦粥

同问啊,解决了么

snail_lt

snail_lt

一样啊,怎么办啊

2***@qq.com

2***@qq.com

请问解决了吗

nikoniko

nikoniko - 前端开发探索者

解决了吗

2***@qq.com

2***@qq.com

解决了吗

a***@163.com

a***@163.com

有一个方法吧,其实uniapp这方面都是想到的,
第一个问题:如何监听到地图移动后的事件。
可以使用:@regionchange事件
虽然上面没有写nvue和vue可用,但是测试了一波,是可以的

手机安卓和IOS系统的可能会发生的事情,这个大佬写的可以,我没有深入那么多,
地址:https://ask.dcloud.net.cn/article/38699
然后我们只需要再结束移动的监听中,获取到当前中心点的位置,第二个问题出现了,如何获取当前中心点位置。

第二个问题:如何获取当前中心点位置
查看uniapp所有关于地图的解释,我再API中找到一个方法,同样,不好上传图片,就直接说吧,
API-》位置-》地图组件控制-》uni.createMapContext(mapId,this)
根据描述和它带有的方法:

创建并返回 map 上下文 mapContext 对象。在自定义组件下,第二个参数传入组件实例this,以操作组件内 <map> 组件。
可以再下面看到,它有一个方法是getCenterLocation
getCenterLocation:获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 uni.openLocation

好,第二个问题好像也就解决了,最后:

<map id="map" ref="map" :style="{height:windowHeight+'px'}" :latitude="latitude" :longitude="longitude" :markers="markers"   
                :enable-rotate="false" @markertap="getMarkerTap" @regionchange="changeMap"  @updated="onMapFinish"></map>  

                        //滑动了地图  
            changeMap(e){  
                let type = '';    
                const { platform } = uni.getSystemInfoSync();    
                switch (platform) {    
                    case 'android':    
                        type = e.type;    
                        break;    
                    case 'ios':    
                        type = e.detail.type;    
                        break;    
                }    
                if (type === 'end') {    
                    // 处理拖拽结束时的逻辑    
                    console.log("结束了");  
                    let mapCtx =uni.createMapContext('map',this);  
                     mapCtx.getCenterLocation({  
                      success:res=> {  
                        console.log(res);  
                                                // 当前中心经纬度位置  
                        this.latitude = res.latitude;  
                        this.longitude =res.longitude;  
                      }  
                    })  
                }    
            },  

上述就是我自己的理解,但是位置的准确度还有其他问题有待观察,但是现阶段至少可以满足要求,后续会再CSDN上面写一篇博客记录一下吧。

  • 9***@qq.com

    始终有个瞬移的过程...这也太坑了

    2022-02-10 10:23

该问题目前已经被锁定, 无法添加新回复