点标记,即Annotation,用于在地图中标记位置,如POI位置、车辆位置等带有位置属性的事物。
腾讯地图SDK点标记功能分为两个部分,点标记数据对象(Annotation)和点标记的信息窗(CalloutView)。
Annotation和CalloutView提供了默认样式,同时也可以自定义样式。
SDK提供了默认的点标记数据对象(QPointAnnotation)和默认的大头针样式点标注View(QPinAnnotationView),基本使用步骤如下:
-
创建点标记数据对象,QPointAnnotation提供了点标记的位置、标题等信息:
-
实现<QMapViewDelegate>协议的方法,创建点标注:
-
效果如下图所示:
腾讯地图SDK可以自定义点标记样式,包括自定义点标记和自定义点标记信息窗口:
如果默认的点标记样式无法满足需求,可以在创建QPinAnnotationView时自定义点标记图标:
效果如图所示:
通过自定义信息窗口,可以展示更多标记点的信息,步骤如下:
自定义信息窗口类,示例代码如下:
在创建Annotation时,指定customCalloutView属性,示例代码如下:
单独添加一个点标记,已经在添加默认样式点标记中介绍了,本小结将介绍如何删除单个点标记、批量添加点标记和批量删除点标记。
-
删除单个点标记:
-
批量添加点标记:
-
批量删除点标记
点标记在添加到地图中时,可以添加动画效果,点标记会添加掉落动画:
通过对点标记进行长按手势,可以将点标记拖动到其他的位置:
点标记默认可以响应点击事件并切换到选中状态,事件响应可以控制开启、关闭。实现<QMapViewDelegate>中的代理方法,可以监听点标记的事件。
-
点标记的事件响应开关:
-
点标注的监听方法
-
点标注的拖动状态:QAnnotationViewDragState
状态 说明 QAnnotationViewDragStateNone 静止状态 QAnnotationViewDragStateStarting 开始拖动 QAnnotationViewDragStateDragging 拖动中 QAnnotationViewDragStateCanceling 取消拖动 QAnnotationViewDragStateEnding 拖动结束
腾讯地图SDK自4.4.1版本起,支持点标记与地图POI元素的碰撞功能,当开启碰撞功能时,与点标记重合的POI元素将会被隐藏,示例代码如下:
示例图如下(左侧为开启碰撞,右侧为关闭碰撞):
- 调增地图显示范围,使其显示范围内的所有点标记:
-
获取构成Annotation、Polyline和多边形的的坐标
-
计算这些坐标构成的最小外接region
-
更新地图显示region
-
效果如图所示:
-
-
多个点标记距离较近,出现相互覆盖的情况
AnnotationView提供了zIndex属性,该值默认为0,值大的会覆盖在值小的上面。
- 本文地址:http://www.tpjde.com/quote/2848.html 推平第 http://www.tpjde.com/ , 查看更多