2***@qq.com
2***@qq.com
  • 发布:2020-02-09 18:30
  • 更新:2020-04-10 13:14
  • 阅读:4650

uni-app项目,APP,当开启V3编译模式时,map的@regionchange、经纬度等无法触发,基本上无法使用

分类:HBuilderX

详细问题描述

uni-app项目,APP,当开启V3编译模式时,map的@regionchange、经纬度等无法触发,基本上无法使用

2020-02-09 18:30 负责人:无 分享
已邀请:
5***@qq.com

5***@qq.com

是啊,说好的只要写一次代码,每次都要写两次

asdasdsad

asdasdsad

遇到同样的问题.

DCloud_uniAD_HDX

DCloud_uniAD_HDX

App 平台 vue map 暂不支持 @regionchange,和 V3 没关系吧,目前已知问题@tap 无效,经纬度是指什么?

  • asdasdsad

    就是开启V3后才获取不到经纬度和地址啥的.

    2020-03-13 18:19

  • asdasdsad

    打勾V3 和 取消勾V3 对比了且重新编译, 打上勾V3, 获取不到数据, 没有打勾一切正常.

    2020-03-13 18:21

  • DCloud_uniAD_HDX

    回复 asdasdsad: 这个 uni.getLocation(OBJECT)吗

    2020-03-13 18:24

  • asdasdsad

    回复 DCloud_uniAD_HDX: 不是,是map组件,具体页面逻辑可以查看这个,https://ext.dcloud.net.cn/plugin?id=1133

    2020-03-13 18:26

  • asdasdsad

    回复 DCloud_uniAD_HDX: V3模式, map组件, 怎么移动视野,都无法触发@regionchange, 去掉V3模式一切正常

    2020-03-13 18:28

  • DCloud_uniAD_HDX

    回复 asdasdsad: 这个是三方开发者提供的 试试 uni.ChooseLocation

    2020-03-13 18:29

  • asdasdsad

    回复 DCloud_uniAD_HDX: 不是三方问题, 哎呀, 单纯用map组件 ,去移动视野, @regionchange='mapChange'绑定的方法也无法触发,打印都不出来....mapChange(e) {

    console.log(e)}

    2020-03-13 18:31

  • DCloud_uniAD_HDX

    uni.ChooseLocation() app平台使用nvue重构了,打开速度更快,优化UI交互

    2020-03-13 18:31

  • asdasdsad

    回复 DCloud_uniAD_HDX: 是vue页面,不是nvue

    2020-03-13 18:32

  • DCloud_uniAD_HDX

    预计下周修复

    2020-03-13 18:34

  • 5***@qq.com

    回复 DCloud_uniAD_HDX: 还有我发现只要用到centerAndZoom或者setZoom后,onstatuschanged就无效了

    2020-03-14 08:42

  • DCloud_uniAD_HDX

    回复 5***@qq.com: 今天发布2.6.6修复此问题

    2020-03-17 10:27

  • asdasdsad

    回复 DCloud_uniAD_HDX: 请问 修复了吗, Alpah还没看到更新

    2020-03-19 12:04

  • 4***@qq.com

    回复 DCloud_uniAD_HDX: 为什么APP中type的值变成regionchange,小程序是begin和end

    2020-04-01 09:21

DCloud_uniAD_HDX

DCloud_uniAD_HDX

HBuilderX 2.6.6+ 已修复

  • 1***@qq.com

    现在hbuilderX已经更新到2.6.7了,这个bug也没修复好呀

    2020-03-27 16:39

DCloud_uniAD_HDX

DCloud_uniAD_HDX

HBuilderX 2.6.6+ 已修复

1***@qq.com

1***@qq.com

现在hbuilderX已经更新到2.6.7了,这个bug也没修复好呀

  • DCloud_uniAD_HDX

    是否使用了自定义基座,如果是需要更新,或提供一个复现问题的简单工程

    2020-03-27 18:26

  • asdasdsad

    我测试没问题了呀。

    2020-03-28 00:32

  • 1***@qq.com

    回复 asdasdsad: 取得e里面那个值?

    2020-03-28 17:26

  • 1***@qq.com

    回复 DCloud_uniAD_HDX: 没有,是取e里面的哪个属性,不用v3取的是e.type,我看@controltap="bindcontroltap"里面取的都变了,在小程序里面取e.controlId,在v3里面要取e.detail.id,不知道这个 @regionchange="onregionchange"在v3中该取哪个

    2020-03-28 17:31

  • 1***@qq.com

    回复 asdasdsad: 麻烦老哥能帮忙指点下么,非让我去掉V3么

    2020-03-28 22:22

  • asdasdsad

    回复 1***@qq.com: regionchange打印的type

    2020-03-30 11:25

  • asdasdsad

    回复 DCloud_uniAD_HDX: 好像是还有问题,@regionchange 无论怎么移动map组件,经纬度都是不变的.

    let mapCtx = uni.createMapContext('map')

    mapCtx.getCenterLocation({

    success:res=>{

    console.log(res)

    }


    })

    2020-03-30 11:33

  • DCloud_uniAD_HDX

    回复 1***@qq.com: @controltap 和小程序一样的,要以小程序的真机为准 e.detail = {controlId},@regionchange app-vue 目前不支持type,app-nvue 和微信小程序一致

    2020-03-30 11:34

  • asdasdsad

    回复 asdasdsad:V3 vue页面

    2020-03-30 11:40

  • 1***@qq.com

    回复 asdasdsad: 工作人员都说不行了,你确定你在v3下取到了值么,我的怎么取不到呀,感觉要去掉V3了

    2020-03-30 19:05

  • asdasdsad

    回复 1***@qq.com: 试了下,nvue页面, V3模式, regionchange 的值是 e.detail.type

    2020-03-30 20:37

  • 1***@qq.com

    回复 asdasdsad: 我这边是undefined

    2020-03-31 15:40

  • DCloud_uniAD_HDX

    回复 1***@qq.com: 看文档注意事项 vue 页面 regionchange 没有类型回调,nvue 支持

    2020-04-02 20:47

7***@qq.com

7***@qq.com

Hbuilder X 2.6.11.20200409 问题依旧
V3编译模式 @regionchange 移动地图 然年 getCenterLocation获取屏幕中心坐标 还是不行

还是只有关闭V3编译模式,才能正常获取~

  • DCloud_uniAD_HDX

    请提供示例工程,运行到哪个平台

    2020-04-10 13:10

  • 7***@qq.com

    回复 DCloud_uniAD_HDX: 忘记写了,运行在APP,是VUE的文件 如果把文件改成NVUE,移动之后获取正常,但是之前的样式什么的就全部乱了。。。

    2020-04-10 14:27

DCloud_uniAD_HDX

DCloud_uniAD_HDX

V3 验证没有问题

<template>  
    <view>  
        <map id="map1" show-location="true" :latitude="latitude"  
            :longitude="longitude" :markers="markers" @regionchange="onregionchange" @markertap="markertap">  
            <cover-image v-if="showCoverView" src="/static/logo.png"></cover-image>  
        </map>  
        <button @click="getCenterLocation">getCenterLocation</button>  
        <button @click="getRegion">getRegion</button>  
        <button @click="resize">size</button>  
        <button @click="updateMarker">update marker</button>  
        <button @click="test">test</button>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                showCoverView: true,  
                latitude: 39.989631,  
                longitude: 116.481018,  
                markers: [{  
                    id: 110,  
                    iconPath: '/static/logo.png',  
                    latitude: 39.989631,  
                    longitude: 116.481018,  
                }]  
            }  
        },  
        onReady() {  
            this.mapContext = uni.createMapContext("map1", this);  
        },  
        methods: {  
            test() {  
                this.showCoverView = !this.showCoverView;  
            },  
            resize() {  
                this.mapWidth = 320;  
                this.mapHeight = 200;  
            },  
            markertap(e) {  
                console.log(e.detail.markerId);  
            },  
            updateMarker() {  
                this.$set(this.markers, 0, {  
                    id: 110,  
                    iconPath: '/static/logo.png',  
                    latitude: 39.989631,  
                    longitude: 116.581018,  
                })  
            },  
            onregionchange(e) {  
                console.log(JSON.stringify(e.detail));  
            },  
            getCenterLocation() {  
                this.mapContext.getCenterLocation({  
                    success: (res) => {  
                        console.log("getCenterLocation");  
                        console.log(res);  
                    }  
                })  
            },  
            getRegion() {  
                this.mapContext.getRegion({  
                    success: (res) => {  
                        console.log("getRegion");  
                        console.log(res);  
                    }  
                })  
            }  
        }  
    }  
</script>  

<style>  
</style>
  • 7***@qq.com

    测试了下上面代码(Hbuilder X 2.6.11.20200409 、APP、Android)

    加了个获取地图中心的代码(项目APP,全部VUE页面,以前可以正常获取中心位置,现在V3编译之后不行)

    onregionchange(e) {

    console.log("onregionchange=>",JSON.stringify(e.detail));

    this.mapContext.getCenterLocation({

    type: 'gcj02',

    success: (res) => {

    console.log("region getCenter=>",res.latitude,res.longitude);

    }

    })

    },


    ==================================


    =>现在如果是 V3编译 VUE页面

    onregionchange(e) {

    console.log("onregionchange=>",JSON.stringify(e.detail));

    //地图中心坐标

    var latitude = e.detail.center.latitude;

    var longitude = e.detail.center.longitude;

    },


    =>现在如果是 V3编译 NVUE页面

    onregionchange(e) {

    console.log("onregionchange=>",JSON.stringify(e));

    this.mapContext.getCenterLocation({

    type: 'gcj02',

    success: (res) => {

    console.log("region getCenter=>",res.latitude,res.longitude);

    //地图中心坐标

    var latitude = res.latitude;

    var longitude = res.longitude;

    }

    })

    },


    下面输出的日志----------------------------

    =>【VUE页面】 getCenterLocation 输出的坐标是初始坐标(29.557244,106.577054)一直不会变(应该是个BUG)

    onregionchange 的 e.detail

    输出 {"center":{"latitude":29.553864,"longitude":106.573859},"bounds":{"southwest":{"latitude":29.550593,"longitude":106.568216},"northease":{"latitude":29.557127,"longitude":106.57951},"northeast":{"latitude":29.557127,"longitude":106.57951}},"zoom":16,.....


    移动地图

    15:39:38.523 onregionchange=>, {"latitude":29.557244,"longitude":106.577054}

    15:39:38.603 region getCenter=>, [Number] 29.557244 , [Number] 106.577054

    移动地图

    15:40:01.191 onregionchange=>, {"latitude":29.555334,"longitude":106.56851}

    15:40:01.210 region getCenter=>, [Number] 29.557244 , [Number] 106.577054

    移动地图

    15:40:47.741 onregionchange=>, {"latitude":29.550377,"longitude":106.55859}

    15:40:47.760 region getCenter=>, [Number] 29.557244 , [Number] 106.577054


    =>【NVUE页面】 getCenterLocation 正常改变

    onregionchange 的 e.detail 没有,只能输出 e 但是e里面没有center坐标

    console.log("onregionchange=>",JSON.stringify(e));

    {"type":"begin","timeStamp":1586506976651,"target":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"currentTarget":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"detail":{}} at pages\dynamic\add-dynamic-location-map.nvue:60


    移动地图

    15:46:30.539 onregionchange=>, {"type":"begin","timeStamp":1586504790848,"target":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"currentTarget":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"detail":{}}

    15:46:30.559 region getCenter=>, [Number] 29.55711766138007 , [Number] 106.57671775883254

    移动地图

    15:46:30.865 onregionchange=>, {"type":"end","timeStamp":1586504791169,"target":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"currentTarget":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"detail":{"rotate":0,"skew":0},"causedBy":"drag"}

    15:46:30.885 region getCenter=>, [Number] 29.554735478962282 , [Number] 106.57306324911228

    移动地图

    15:48:00.215 onregionchange=>, {"type":"begin","timeStamp":1586504880526,"target":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"currentTarget":{"id":"map1","dataset":{},"offsetLeft":0,"offsetTop":0},"detail":{}}

    15:48:00.234 region getCenter=>, [Number] 29.554717979863074 , [Number] 106.57298948836562

    2020-04-10 16:56

  • 1***@qq.com

    回复 7***@qq.com: 编辑器更新到2.7.14之后出现了你的问题,你怎么解决的,有办法没?

    2020-07-16 18:53

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