使用须知

1、什么是腾讯手机地图SDK?

腾讯手机地图SDK(iOS)是一套基于iOS 4.0及以上设备的应用接口,通过该接口,您可以方便地访问腾讯地图为您提供的高质量地点数据和服务,构建丰富而实用的地图及位置服务类应用。手机腾讯地图API除提供创建底图、缩放、平滑移图等基础功能外,还提供定位、反地址解析,实时路况等拓展服务,助您在应用开发中事半功倍。地图API的服务需要注册,免费的向第三方提供,任何非盈利性网站均可使用。

2、地图SDK提供了哪些功能?

腾讯手机地图SDK提供了基本的地图构建,POI搜索,反地址解析,实时路况;自定义图层等丰富功能,具体的内容您可以详细阅读参考手册进行进一步的了解。

2、调用有次数限制吗?

目前腾讯手机地图SDK没有单日调用上限的限制。

创建工程

1、地图SDK是否支持CocoaPods部署?

支持,在开发指南的自动部署页面可以了解如何使用CocoaPods来部署SDK。

2、如何查看当前SDK的版本?

QMapServices类中提供查询方法:[QMapServices sharedServices].sdkVersion;

3、如何下载2D地图SDK?

2D地图SDK可以在官网中下载,但是由于2D地图SDK已经停止更新,建议开发者使用最新的3D地图SDK

4、使用SDK时报错: key 鉴权失败: KEY_FORMAT_ERROR是什么问题?

在使用SDK之前,需要在控制台申请ApiKey,并且在初始化地图之前调用[QMapServices sharedServices].APIKey = @"key";来设置。

5、如何让Key与App的Bundle Identifier对应?

控制台页面,进入key设置页面,可以在如下图的位置,设置key与Bundle Identifier的对应关系。

6、如何真机调试官网的Demo?

真机调试Demo,需要在工程配置页面中修改Bundle Identifier,并在Signing页面中配置Team。


地图显示

1、地图显示一片空白是怎么回事?

原因:没有正确的添加资源文件,因此导致地图加载不成功。

解决:需要将QMapKit.bundle资源文件添加到工程中,如下图所示:

2、创建地图时,出现了异常崩溃,如下例信息所示:

Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: '-[NSConcreteData QMapMd5String]: unrecognized selector sent to instance. 原因:在工程项目配置文件的Build Setting页面中,搜索Other Linker Flags并添加-ObjC,请保证大小写一致。

3、地图显示鉴权失败。

地图显示之后出现如下提示:

原因:key不正确,或者bundleId不正确。请在官网检索是否为本key开通了SDK权限。

4、地图是否支持英文?

目前地图SDK只有海外地图可以切换英文和中文显示,国内地图目前只支持中文。

5、是否支持离线地图呢?

地图SDK从4.3.5版本开始,支持离线地图功能,开发指南请参考离线地图;

6、地图中的poi名称是否可以隐藏呢?

可以通过QMapView的接口@property (nonatomic) BOOL showsPoi;来设置是否显示POI。

7、建筑物的3D效果是否可以关闭?

可以通过QMapView的接口@property (nonatomic) BOOL shows3DBuildings;来设置是否显示3D楼块。

覆盖物

1、多个点标记出现了相互覆盖的情况,如何调整压盖关系呢?

AnnotationView提供了zIndex属性,该值默认为0,值大的会覆盖在值小的上面。

2、如何完全显示所有的Annotation或者Overlay?

获取构成Annotation的坐标,并计算这些坐标构成的最小外接region,最后更新地图显示的region,示例代码如下所示:

3、如果添加上百个点标记,是否会影响性能?

点标记是绘制在地图之上的图片资源,当使用海量的Marker数据时,为了性能体验,建议使用点聚合来辅助显示。

4、折线正常显示,但是动态路名文字没有显示:

需保证最上层显示的文本信息中QTextStyle的priority属性为QTextPriority_High,以及对应的polylineView的displayLevel属性为QOverlayLevelAboveRoads或者QOverlayLevelAboveBuildings。

5、为什么多边形的连线是中间交叉的?

在创建QPolygon数据模型时,需要注意传入的坐标要按照顶点连接顺序传入,保证图形闭合时顶点连线不会交叉。

6、绘制的多边形,是否可以调整与楼块、POI之间的压盖顺序?

QOverlayView的displayLevel可以设置多边形的压盖层级,具体可以参考元素压盖顺序介绍。

7、为什么QPolylineView绘制的路线,会让POI标志物消失?

线覆盖物与其他图形不同,由于一般线是绘制在道路中的,因此具有POI避让规则,会让线周围的POI自动隐藏。

检索

1、已经配置好了Key,为什么还是提示key格式错误?

使用检索功能,首先要导入头文件#import ,然后通过[[QMSSearchServices sharedServices] setApiKey:@"Your API Key"];来配置检索Key。

2、2D地图是否有检索功能?

2D地图SDK没有提供检索功能接口,建议用户将SDK升级到3D地图SDK,或者使用HTTP请求WebService API的接口来实现检索功能。

3、使用检索时,报错签名错误如何解决?

如果key的WebServiceAPI功能开启了签名校验,就不能直接使用SDK的检索功能了,需要按照签名规则通过HTTP请求的方式来使用检索功能。在移动端SDK中并不建议使用签名校验功能,因为通过bundle id检验的方式已经可以保护您的key调用权限。

4、发起检索功能时,为什么不走回调方法?

该情况可能是由于检索失败导致的,当检索失败时,回调函数searchWithSearchOption: didFailWithError:会返回对应的错误信息。

5、Key配置无误,检索成功与失败回调方法均不执行。

请检查代码是否将QMSSearcher初始化为局部变量,如果声明为局部变量则会在该方法执行完毕之后释放检索对象,因此必须声明为成员变量才可使用。

定位

1、定位是否支持更换默认的定位图标?

支持,在头文件QUserLocationPresentation.h中提供的属性,可以用于修改定位图标和定位圈颜色。然后通过mapView的configureUserLocationPresentation:方法来设置。

2、定位圈自动的缩放,是根据什么来控制的?

定位精度圈会根据当前定位信息的精度来缩放。定位圈越大,精度越低;定位圈越小,精度越高。在室外一般精度会高一些,室内由于gps信号不好,精度就会低。

3、定位是否支持点击定位标回调方法?

地图SDK 4.3.5版本中添加了- (void)mapView:(QMapView *)mapView didTapMyLocation:(CLLocationCoordinate2D)location方法,该方法会在点击定位图标时调用。

4、在QUserTrackingModeFollow和QUserTrackingModeFollowWithHeading模式下,拖动地图为什么就不跟踪定位了?

如果在QUserTrackingModeFollow和QUserTrackingModeFollowWithHeading模式下改变地图视野时,跟踪模式会转变为QUserTrackingModeNone,如果需要跟踪功能,则需要再次设置。