高德地图iOS SDK限制地图的缩放比例

问题

高德地图的iOS SDK 3D版中(v2.4.0), 显示范围在560m左右时建筑会呈现3D效果. 我们有没有办法可以限制地图最小缩放到这个比例, 从而保证建筑始终使用3D效果显示呢?

探索

高德地图的MAMapView再怎么封装也是个UIView, 通过加断点很容易看出它的结构

很明显, 地图上的操作都是依赖UIGestureRecognizer来处理的. 为了限制地图的交互, 我们只需要想办法修改一下这些gesture的处理逻辑即可.

对于pinch操作它提供了handlePinch:  一个直接的想法是继承并重写这个方法, 但总是有些略繁琐.

一个gesture是可以绑定多个处理方法的, 我们可以选择一个更hack的方法. UIPinGestureRecognizer只有一个scale属性是可读写的, 按理说地图的缩放应该是直接根据这个属性来调整的. 那么我们只要能够让这个值保持不变, 那就可以让地图也不再跟着缩放了. 结果证明这么做是没问题的.

核心代码如下:

- (void)handlePinch:(UIPinchGestureRecognizer *)recognizer
{
    if (recognizer.state == UIGestureRecognizerStateBegan) {
        _lastPinchScale = recognizer.scale;
    }
    auto meter = [_map metersPerPointForCurrentZoomLevel];
    if (recognizer.velocity < 0 && meter > MaxMeter) {
        _builtinPinch.scale = _lastPinchScale;
    }
    _lastPinchScale = _builtinPinch.scale;
}

效果图:

时间: 2024-12-23 03:17:12

高德地图iOS SDK限制地图的缩放比例的相关文章

【视频教学】如何利用高德地图IOS SDK进行开发?

Step1:使用IOS SDK可以做什么高德地图 iOS SDK 是一套基于 iOS 5.1.1 及以上版本的地图应用程序开发接口.通过该接口,用户可使用高德地图数据和服务轻松构建功能丰富.交互性强的地图应用.地图 iOS SDK 不仅包含构建地图的基本接口,还提供了诸如本地搜索.路线规划.公交搜索以及坐标地址搜索等服务,用户可以根据自己的需要进行选择.高德地图 iOS SDK的服务是免费的,任何非盈利性网站均可使用.您需要先申请Key,才能使用该服务.  Step2:视频学教程如何使用IOS

IOS SDK百度地图不能正常显示,只显示网格

在使用百度地图开发的时候出现的问题,问题为: IOS SDK百度地图不能正常显示,只显示网格 如图所示 在这里出现的问题纠结了很久,最后发现在API控制台创建应用的时候需要输入安全码 之后知道此安全码即为工程中的Bundle Identifier 所以我们填写的时候需要将工程中的info.plist文件设置Bundle Identifier和安全码一样即可 此外还有部分需要注意的地方 注意: 1. 为了给用户提供更优质的服务,iOS SDK自v2.0.2版本开始采用了全新的Key验证体系.因此,

百度地图 iOS SDK - 新版本上线,支持iOS8、arm64、iPhone6

百度地图 iOS SDK v2.5.0 版本于10月21日下午顺利完成了新版本的上线工作,该版本主要针对 iOS8 的定位功能进行了适配:对 arm64 CPU 进行了适配:对 iPhone6 及 iPhone6 plus 的屏幕显示进行了相关的适配工作. 相信新版本的发布会给更多开发者带来开发上的便利! 新版本更新日志如下: 2014年10月21日 百度地图iOS SDK v2.5.0发布 使用Xcode6创建工程时注意事项如下: 在info.plist中添加:Bundle display n

百度地图 iOS SDK - 坐标转换方法

百度地图 Android SDK 或者 iOS SDK 或者各种各样的 API 工具产品,都使用的是百度自己经过加密的坐标体系. 众多开发者在使用过程中,位置点都是通过 GPS 或者其他途径获取的,所以与百度地图所使用的坐标系存在差异. 开发者在将这些空间位置信息运用到地图地图上得时候,需要进行响应的纠偏(坐标转换),iOS SDK 为广大开发者早已开放了响应的坐标转换方法, 开发者只需要短短的几行代码就可以实现相应的坐标转换操作了. 具体方法如下: <span style="font-s

百度地图 Android SDK - 个性化地图

什么是百度个性化地图Android SDK? 百度个性化地图Android SDK是一套基于Android 2.2及以上版本设备的应用程序接口,您可以通过该套接口实现基本的地图功能,并且可以定制地图样式,实现个性化地图. 该接口提供以下功能: 1.基本地图:提供地图(2D.3D)的展示和缩放.平移.旋转.改变视角等地图操作: 2.个性化地图:可以更改地图样式,让您的地图与众不同,实现个性化定制: 3.覆盖物:提供常见地图覆盖物(自定义标注.几何图形等),满足开发者的各种需求: 4.坐标映射:提供

ios添加百度地图方法

Hello BaiduMapiOS SDK 引入头文件 引入静态库文件 引入系统framework 引入mapapi.bundle资源文件 初始化BMKMapManager 创建BMKMapView 引入头文件 首先将百度MapAPI提供的头文件和静态库(.a)文件拷贝到您的工程目录下,在Xcode中添加新的文件Group,引入百度MapAPI提供的头文件(请使用Xcode 4.X以上平台). 在您需要使用百度MapAPI的文件中添加以下代码 #import "BMapKit.h" 引

【高德地图Android SDK】视频教学

前两天参加了高德在北航举办的公开课,感觉非常不错.完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!! 现在来跟大家分享一下,如何快速学习[高德地图Android SDK]的开发.一天包会!连环境如何配置,都在视频里有喔. 基础知识 Android 导航 SDK 是一款针对在线导航的产品,产品功能涵盖路径规划.模拟导航.GPS 定位.自定义导航界面.获取导航播报信息等.此外,该产品的导航路径计算与实时交通信息相结合,力求为用户提供更加合理.准确.人性化的导航服务.Android 导航 S

高德地图Android SDK通过View初始化Marker的一些用途

大家都知道在高德地图Android SDK中,InfoWindow是全局唯一的,并且这个infowindow与AMap和Marker有关,使用起来不是很灵活,并且没法实现如下类似的需求:现在我们有一些自定义marker,或者查询得到的poi数据,我们想在地图上直观的看到这些点具体情况(效果如下图所示),而不是需要点击每个marker,弹出一个infowindow来才能查看到它的消息.这种需求我们就需要考虑别的方式来实现了. 其实实现这个功能也很简单,我们需要变通一下,从Marker去着手而非从I

iOS定位服务与地图开发(4)---显示地图

iOS 6之前,苹果使用的是谷歌地图,iOS 6之后,苹果使用了自己的地图(国内好像用的是高德地图),但是API编程接口与iOS 5相比没有太大变化. iOS 应用程序中使用Map Kit API开发地图应用程序,使用MKMapView类作为地图显示视图,其委托协议是MKMapViewDelegate. 1.显示地图: .h文件中代码 #import <MapKit/MapKit.h> @interface YXCViewController <MKMapViewDelegate>