微信小程序map中心经纬度变化过程中加动画
时间: 2024-11-22 22:42:48 浏览: 95
在微信小程序中,当你需要在地图组件(`map`)的中心经纬度发生变化时添加平滑的动画效果,通常可以利用CSS3的`transition`属性或者JavaScript的定时器函数配合`wx.setMapPosition`来实现。以下是简单的步骤:
1. **设置初始位置**:
使用`wx.createSelectorQuery()`选择地图组件并获取当前的位置信息。
```javascript
const query = wx.createSelectorQuery();
query.select('#map').fields({
location: true,
mapType: 'satellite'
}).exec((res) => {
const initialLat = res[0].location.latitude;
const initialLng = res[0].location.longitude;
});
```
2. **改变中心坐标**:
当需要更新地图中心时,先记录下新的经纬度,然后稍微延时一下再执行`wx.setMapPosition`,给用户一点视觉反馈。
```javascript
// 新的中心点
const newLat = ...; // 新的纬度
const newLng = ...; // 新的经度
// 设置延迟(例如500毫秒)
setTimeout(() => {
wx.setMapPosition({
latitude: newLat,
longitude: newLng
}, (err) => {
if (!err) {
// 动画效果开始,可以配合CSS3 transition
// 更新CSS class 或者使用wx.createAnimation
}
});
}, 500);
```
3. **添加CSS动画**:
在CSS中,你可以定义一个包含`transform: translate()`的类,当这个类应用到地图容器上时,会触发平滑的移动动画。
```css
.map-animate {
transform: translate(-${newLng}deg, -${newLat * 100}%); /* 翻译值基于新经纬度 */
transition: all 0.5s ease-out; /* 可调整时间及缓动曲线 */
}
```
4. **添加/移除动画效果**:
当地图中心定位完成后,切换地图容器的class来控制动画显示与否。
```javascript
// 定位成功后
this.setData({
mapAnimateClass: true, // 添加动画类名
});
// 或者当不需要动画时
this.setData({
mapAnimateClass: false, // 移除动画类名
});
```
阅读全文
相关推荐
















