美文网首页
地图阻尼运动

地图阻尼运动

作者: ccSundayChina | 来源:发表于2017-06-13 21:46 被阅读268次

没错,还是关于地图的。

其实我是比较犹豫要不要为了这样一个东西写篇文章,因为我觉得这个东西比较简单,可是在网上搜了一大圈后,发现竟没有这方面的文章,好吧,可能是因为大伙觉得比较low,而没有写。

不过我还是写下来吧,万一以后有人用呢。

先看下什么是地图阻尼。
地图阻尼.gif

在这里我们每次点击左侧的加号时,地图层级加1,点击减号的时候,地图层级减1。

如果没有阻尼的话,我们的地图几乎会在瞬间(0.1s)进入指定的层级,动画僵硬,给人的美感太差。

有阻尼的话,我们可以让地图在指定的时间内(本demo中是1s),从层级A变化到层级B。

实现思路:

我们假如要在1s内,将地图层级从11变为13,那么我们就将这1秒钟分成10份,一份是0.1s,而每过一个0.1s,地图层级变化的增量就是(13-11)/10 = 0.2。这样我们可以每过0.1s就更新地图的层级(setZoomLevel :),就可以了。当1s结束的时候,地图层级刚好就是我们想要的层级,是不是很简单。

直接上代码:
//由于是弱业务,所以该代码写在`MapViewManager`类中。

/*定义地图缩放的持续时长*/
#define MAP_ZOOM_DURATION  1.0
/*地图从一个级别缩放至另一个级别,地图的缩放总次数*/
#define MAP_ZOOM_NUMS      10.0

/**
 阻尼效果改变地图等级
 
 @param currentLevel  当前的等级
 @param settingLevel  要设定的等级
 */
- (void)dampZoomingMapLevelFromCurrentValue:(float)currentLevel
                             ToSettingValue:(float)settingLevel{
    float unitZoomLevelDuringTime = MAP_ZOOM_DURATION/MAP_ZOOM_NUMS;
    float unitZoomLevelIncrement = (settingLevel - currentLevel)/MAP_ZOOM_NUMS;
    for (int i = 1; i<=MAP_ZOOM_NUMS; i++) {
        float tempZoomLevel = currentLevel+i*unitZoomLevelIncrement;
        dispatch_time_t time =  dispatch_time(DISPATCH_TIME_NOW, (uint64_t)(NSEC_PER_SEC * (i*unitZoomLevelDuringTime)));
        dispatch_after(time, dispatch_get_main_queue(), ^{
            [_mapView setZoomLevel:tempZoomLevel];
        });
    }
}

demo地址
我想这应该不会是地图系列的最后一篇。。

下面是地图系列的其他相关文章:
给你的地图模块动手术
给你的地图点灯

相关文章

  • 地图阻尼运动

    没错,还是关于地图的。 其实我是比较犹豫要不要为了这样一个东西写篇文章,因为我觉得这个东西比较简单,可是在网上搜了...

  • 厨房装谷仓门

    一定要跟商家要求安阻尼器 阻尼器! 阻尼器!! 阻尼器!!! 我就是没有经验,自己网上买防撞条和阻尼器,结果还是不理想

  • 通过物理关节joint实现的特效

    motorjoint可以实现阻尼振动运动 弓弦通过 revolutejoint组合形成 例如 弓箭发送后弓弦恢复原...

  • 蘑菇头阻尼母@衡水蘑菇头阻尼母@蘑菇头阻尼母厂

    蘑菇头阻尼母@衡水蘑菇头阻尼母@蘑菇头阻尼母厂 我公司主要生产:矿用四爪扭力螺母、矿用法兰扭力螺母、矿用蘑菇头螺母...

  • iOS 动画二:Springs 动画

    Spring 动画 Springs 动画,就像现实中的弹簧动画,在动画的过程中有加速度和阻尼,而非直线运动。iOS...

  • 探索阻尼动画优雅的实现方式

    简述 本文探讨下如何在 Android 上实现阻尼动画,首先 wiki 下阻尼的定义:是指任何振动系统在振动中,由...

  • Core Animation注意事项

    最近在公司项目中有很多动效处理,在做一个先上下后左右进行阻尼运动时,本人是通过Core Animation中的CA...

  • Android 开源项目及库汇总(2)

    地图 百度地图– Android百度地图 线路规划,模拟运动轨迹,及全景效果。 AirMapView– 支持多个本...

  • 单自由度振动方程

    神奇小车在无阻尼无外加力的环境条件下: 小车质量,弹簧劲度系数,无摩擦力,小车运动位置 根据牛顿第二定律列写方程:...

  • 大兴区北京阻尼运动中心举办女排精神藏品展

    2020年11月14日上午,主题为“辉煌三十九载,女排精神耀中华”的中国女排藏品展开幕仪式在北京阻尼运动中心一层大...

网友评论

      本文标题:地图阻尼运动

      本文链接:https://www.haomeiwen.com/subject/kpjjqxtx.html