uni-app 地图缩放中心点问题
uni-app 地图缩放中心点问题
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 14.2.1 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:4.29
手机系统:Android
手机系统版本号:Android 11
手机厂商:华为
手机机型:非特定机型
页面类型:nvue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
```html
<map id="map"
min-scale="3"
max-scale="20"
:longitude="lon"
:latitude="lat"
:scale="scale"
:markers="markers"
:show-scale="false"
:enable-traffic="traffic"
@regionchange="doRegionchangeAli"></map>
操作步骤:
无
预期结果:
无
实际结果:
无
bug描述:
iOS地图缩放中心点是**地图中心**,Android地图缩放中心点是**双指缩放中心**,请问能否统一或提供设置方法?
搜索发现之前有人遇到过但是没找到解决方案
https://ask.dcloud.net.cn/question/111202
https://ask.dcloud.net.cn/question/168056
1 回复
在处理 uni-app 中地图组件的缩放中心点问题时,通常我们需要确保在缩放地图时,中心点(通常是用户点击或指定的位置)保持不变。这可以通过监听地图的缩放事件,并动态调整地图的中心点坐标来实现。以下是一个简单的代码示例,展示了如何在 uni-app 中实现这一功能。
首先,确保你的项目中已经引入了地图组件。然后,你可以按照以下步骤进行设置:
- 在页面的
<template>
部分添加地图组件:
<template>
<view class="container">
<map
id="myMap"
:longitude="longitude"
:latitude="latitude"
:scale="scale"
:markers="markers"
@tap="onMapTap"
@regionchange="onRegionChange"
style="width: 100%; height: 100%;"
></map>
</view>
</template>
- 在页面的
<script>
部分定义数据和方法:
<script>
export default {
data() {
return {
longitude: 116.397428, // 初始经度
latitude: 39.90923, // 初始纬度
scale: 14, // 初始缩放级别
tapLongitude: null, // 点击位置的经度
tapLatitude: null, // 点击位置的纬度
markers: [
{
id: 1,
latitude: 39.90923,
longitude: 116.397428,
title: '示例位置'
}
]
};
},
methods: {
onMapTap(e) {
this.tapLongitude = e.detail.longitude;
this.tapLatitude = e.detail.latitude;
this.centerAndZoom(this.tapLongitude, this.tapLatitude, this.scale + 1);
},
onRegionChange(e) {
// 如果需要,可以在此处理区域变化事件
},
centerAndZoom(longitude, latitude, scale) {
this.longitude = longitude;
this.latitude = latitude;
this.scale = scale;
// 这里可以添加逻辑来平滑过渡缩放和中心点变化
// 例如使用 setTimeout 或 requestAnimationFrame 来模拟动画效果
}
}
};
</script>
- 在页面的
<style>
部分添加样式(可选):
<style>
.container {
height: 100vh;
}
</style>
在上述代码中,当用户点击地图时,onMapTap
方法会被触发,该方法记录点击位置的经纬度,并调用 centerAndZoom
方法以该点为中心进行缩放。注意,这里的缩放是通过直接设置 scale
属性来实现的,你可能需要根据实际需求调整缩放逻辑,比如添加动画效果等。
此外,onRegionChange
方法用于监听地图区域变化事件,你可以根据需要在此方法中添加额外的逻辑处理。