准备工作
HelloMap
1、添加权限
地图SDK需要使用网络,访问硬件存储等系统权限,在AndroidManifest.xml文件里,添加如下权限,
2、显示地图
首先,修改布局文件activity_main.xml,添加MapView,如下所示:
然后,MainActivity代码如下所示:
运行程序,则可以显示地图了,如下图所示。
如果地图上有"鉴权失败"的红色水印,请按照这里添加开发者密钥。
3、地图生命周期
为了保证程序的安全性,确保程序退出后,清空地图占用的内存资源,开发者需要管理地图的生命周期。
如果用户使用继承自MapActivity的组件装载地图,则Map SDK会自动监听MapActivity的生命周期,实现对MapView的生命周期进行自动管理,开发者不需要对MapView的生命周期进行管理,如下所示:
如果用户没有使用继承自MapActivity的组件装载地图,比如使用继承自Activity、Fragment等组件,则需要开发者实现对MapView的生命周期进行管理。如果用户使用继承自Activity的组件装载地图,则需要在Activity的onPause()里,调用MapView的onPause(),在Activity的onDestroy()里,调用MapView的onDestroy(),如下代码所示:
地图设置
1、TencentMap类
腾讯地图的设置是通过TencentMap类进行设置,可以控制地图的底图类型、显示范围、缩放级别、添加/删除marker和图形,此外对于地图的各种回调监听也是绑定到TencentMap。下面是TencentMap类的使用示例:
2、UiSettings类
UiSettings类用于设置地图的视图状态,如Logo位置设置、比例尺位置设置、地图手势开关等。下面是UiSettings类的使用示例:
标记
标记Marker指的是地图上由图标和信息窗标识的单个地点,不同的标记可以根据图标和改变信息窗的样式和内容加以区分。
1、使用Marker
用户也可以使用Marker进行标注,Marker也提供了更丰富的属性和图标添加方式以满足用户的多种需求。具体代码如下所示:
运行,则标注添加成功,如下图所示。
2、标记事件
标记支持点击监听、点击信息窗监听、拖动监听,示例代码如下:
2、自定义infoWindow
腾讯地图还提供了自定义infoWindow的设置接口,下面是简单示例:
3、使用OverlayItem
这个类作为兼容旧版本的标记功能,建议新用户不要使用。这里也给出了示例,具体代码如下所示:
图形绘制
用户可以在地图上画出圆形、矩形、线段等几何图形标注关注的区域。用户也可以修改这些几何图形的颜色、边界、透明度等属性,绘制出合适的标注
1、折线
折线是由Polyline类定义的一组在地图上相连的线段,它由一组LatLng点按照一定顺序连接而成。
折线的实例化需要一个PolylienOptions对象,并向其中添加坐标点,添加坐标点的方式可以是每次添加一个点,也可以直接添加一个坐标点集合。添加折线的示例如下:
最终效果图如下
2、多边形
多边形是由Polygon类定义的一组在地图上的封闭线段组成的图形,它由一组LatLng点按顺序连接而成的封闭图形。下面的代码展示了腾讯地图添加多边形的方法:
3、圆
圆形是由Circle类定义的封闭曲线,在腾讯地图构造一个圆形需要确定它的圆心和半径,具体的示例代码如下:
运行程序,则标注显示如下图所示。
当程序退出或用户不再需要标注时,可以通过tencentMap.clearAllOverlays()删除标注。
地图事件
腾讯地图提供了丰富的回调事件,下面列出了腾讯地图2D SDK 支持的回调:
地图视图变化回调 | TencentMap.OnMapCameraChangeListener |
地图点击回调 | TencentMap.OnMapClickListener |
地图加载完成回调 | TencentMap.OnMapLoadedListener |
地图长按回调 | TencentMap.OnMapLongClickListener |
地图截图成功回调 | TencentMap.OnScreenShotListener |
下面只是TencentMap.OnMapLoadedListener 的简单示例,其余回调的使用都是类似的:
投影工具
投影工具包含地图坐标与屏幕坐标的转换、地理坐标的直线距离计算、获取地图视图范围、获取比例尺等功能。下面是部分功能示例代码,更多接口描述请参考开发文档:
为IOVerlay 添加动画
在某些场景下,用户需要动画移动Marker、旋转Marker等操作时,可以下载 腾讯2D地图工具包 可以方便的为继承自 IOVerlay 的Marker等其他类添加动画。下面是为Marker添加动画的示例,更多配置可以参考Demo及压缩包中提供的Javadoc。