2***@qq.com
2***@qq.com
  • 发布:2024-01-10 14:00
  • 更新:2024-01-10 16:36
  • 阅读:221

【报Bug】微信小程序使用map标签创建的地图 某个特定的触发方法修改latitude,longitude后 地图不会跳转过去

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 22H2

HBuilderX类型: 正式

HBuilderX版本号: 3.98

第三方开发者工具版本号: Stable 1.06.2308310

基础库版本号: 3.1.4

项目创建方式: HBuilderX

操作步骤:

重新写一个方法 用一个按钮来触发修改lnglat也没有用

预期结果:

可以跳转到目标坐标点

实际结果:

没有跳转到目标坐标点

bug描述:

<map ref="map" class="map" id="map" :latitude="latitude" :longitude="longitude" scale="18" show-location="true"  
                :enable-satellite="isWXMap" @tap="bindMap" :scale="zoom" @regionchange="changeRegion" :polygons="polygons"  
                :markers="markers" @markertap="clickMarker" :circles="nearbyCircle"></map>

以上是map标签的参数
通过修改参数latitude,longitude所绑定的两个值 无法将视角跳转到所对应的坐标
以下是调用其函数的标签 是使用@click方法触发的

                <view v-for="(item, index) in nowHouseList" :key="index" class="list-item" @click="toMyHouseLocation(item)">  
                </view>

以上标签触发了toMyHouseLocation方法
此方法可以正常取到nowHouseList中的值 也可以正常打印

            toMyHouseLocation(option) {  

                this.bdcdyh_position = option.RealEstateNumber // 切换被选中的房屋  

                let lnglat = this.wgs84togcj02(option.lnglat[0], option.lnglat[1])  

                console.log('lnglat', lnglat) // 可以正常打印  

                // 111.9730561328634 27.69541411272474        参考坐标  
                                // 跳转到目标位置  
                this.longitude = lnglat[0]   
                this.latitude = lnglat[1]  

                console.log('location', this.longitude, this.latitude) // 发现打印出来的是修改后的值  

            },

补充: 使用其他方法修改lnglat值后 此方法再次修改就可以使用了 但是使用一次 之后重复触发此方法又会失效

2024-01-10 14:00 负责人:无 分享
已邀请:

最佳回复

2***@qq.com

2***@qq.com (作者)

已解决 lnglat虽然可以设置地点 但是无法根据地图中心点自动变化 如果需要重新返回原来的值 那么修改一下值的精度就可以了加一位精度 或者减一位精度

套马杆的套子

套马杆的套子 - 没有解决不了的问题,只有解决不完的问题

map 标签创建的地图是基于微信小程序原生的地图组件,它的属性是只读的

uni.createMapContext(mapId,this)里moveToLocation这个方法,是可以移动的

  • 2***@qq.com (作者)

    请查看刚刚我更新的补充 在最下面 同样是使用修改this.longitude和this.latitude 任然可以改变中心坐标点 当然 其他的改变坐标我也是这么写的 也可以改变

    2024-01-10 14:06

  • 2***@qq.com (作者)

    似乎找到原因了 我在onshow方法中调用了某个方法 此方法会自动改变lnglat的值 视角会跳过去 当我再次移动视角后 lnglat的值并没有改变 我仍然跳转的是该地点 所以导致无法跳转过去 现在的问题就是 为什么我移动视角后 map属性绑定的 lnglat没有发生改变

    2024-01-10 14:30

2***@qq.com

2***@qq.com (作者)

至于为什么不用uni.createMapContext(mapId,this)里moveToLocation方法移动视角 是因为需求中有地图视野发生变化后触发的事件 使用moveToLocation时无法触发这个地图移动事件 所以只使用的<map>中的 :longitude和:latitude属性设置中心点 这个方法的缺点就是不会根据你的视角移动所改变 并且如果当前的值完全等于你下一次需要跳转的位置 则其不会发生任何改变 (或许是没有触发watch的机制) 所以需要手动减少或添加一位精度触发机制 就可以做到重复访问同一个地点了。 楼上说值是只读的 我不理解为什么说是只读的 而且此方法绑定数值后可以设置中心点坐标。 记录一下踩坑吧。。。

要回复问题请先登录注册