准备工作

在正式进行2D 地图开发前请先参考工程设置配置您的工程,并在这里获取开发包。

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。