Maps SDK for Android 实用程序库

正寻求为您的地图添加高级功能吗?Maps SDK for Android 实用程序库是适用于各类应用的开源类库。GitHub 代码库中提供的实用程序类和演示版应用说明了每个类的用法。

在本视频中,Chris Broadfoot 将介绍这个实用程序库,其中将重点介绍多段线解码、球面几何图形和气泡图标。

快速设置

如需安装 Maps SDK for Android 实用程序库,请按照设置指南进行操作。

实用程序

一幅包含 GeoJSON 图层的地图

将 GeoJSON 导入您的地图

您可以用 GeoJSON 格式存储地图项,然后使用此实用程序将它们渲染为覆盖在地图上的图层。调用 addLayer() 以将 GeoJSON 数据添加到地图中。您还可以通过调用 addFeature()、传入 GeoJsonFeature 对象来添加各个地图项。

如需了解详情,请参阅有关 Google Maps Android GeoJSON 实用程序的文档。

一幅包含 KML 图层的地图

将 KML 导入您的地图

您可以利用该实用程序将 KML 对象转换为地理形状,并将它们渲染为覆盖在地图上的图层。调用 addLayerToMap() 以将图层添加到地图中。您可以通过对任何 Placemark、GroundOverlay、Document 或 Folder 调用 getProperties() 来访问 KML 对象中的属性。

如需了解详情,请参阅有关 Google Maps Android KML 实用程序的文档。

一幅包含热图的地图

向您的地图添加热图

热图便于查看者了解地图上数据点的分布和相对密度。热图不是在每个位置放置标记,而是利用颜色和形状来表示数据的分布。创建一个 HeatmapTileProvider,向其传递 LatLng 对象集,其中的对象表示地图上的地图注点。然后,新建一个 TileOverlay,向其传递热图图块提供程序,然后向地图添加图块叠加层。

如需了解详情,请参阅有关 Google Maps Android 热图实用程序的文档。

一幅包含气泡图标的地图

通过气泡图标自定义标记

添加一个 IconGenerator,以便在标记上显示信息摘要。此实用程序可让您的标记图标有些类似于信息窗口,因为标记本身就包含文本和其他内容。其优点在于,您可以让多个标记同时保持打开状态,而信息窗口则一次只能打开一个。您还可以设置标记样式、更改标记和/或内容方向,并更改标记的背景图片/NinePatch 图片。

一幅包含聚类标记的地图

管理标记聚类

ClusterManager 可帮助您管理不同缩放级别的多个标记。也就是说,即便您在地图上放置大量标记,也不会使地图变得难以查看。当用户在高缩放级别下查看地图时,各个标记会显示在地图上。当用户缩小到较低缩放级别时,这些标记会聚拢形成聚类,以方便用户查看地图。

如需了解详情,请参阅有关 Google Maps Android 标记聚类实用程序的文档。

一副包含多个图层的地图

向同一地图添加多个图层

您可以在同一个地图上显示来自 GeoJSON、KML 和聚类的地图项,以及您自己的标记、多段线和多边形。向每个图层添加点击监听器也可以为这些图层添加互动元素。只需实例化 MarkerManagerGroundOverlayManagerPolygonManagerPolylineManager 类,并在设置时将其传递到 GeoJsonLayerKmlLayerClusterManager 的构造函数即可。然后,您可以直接使用上面的 Manager 类,将自己的标记、多段线和多边形添加到地图中。

如需了解详情,请参阅有关 Google Maps Android 多图层演示的文档

一幅包含编码多段线的地图

编码和解码多段线

PolyUtil 用于在编码多段线和多边形与纬度/经度坐标之间进行双向转换。

在 Google 地图中,定义多段线或多边形的纬度和经度坐标以编码字符串形式存储。请参阅对多段线编码的详细说明。您收到的编码字符串可能来自 Directions API 等 Google API 的响应。

您可以利用 Maps SDK for Android 实用程序库中的 PolyUtil 将纬度/经度坐标序列(“LatLngs”)编码成一个编码路径字符串,并将编码路径字符串解码成 LatLngs 序列。这可以确保与 Google Maps API 网络服务的互操作性。

地图上两点间的计算距离

通过球面几何图形计算距离、面积和方位

您可以利用 SphericalUtil 中的球面几何图形实用程序根据纬度和经度计算距离、面积和方位。以下是该实用程序中提供的部分方法:

  • computeDistanceBetween() - 返回两个纬度/经度坐标之间的距离(以米为单位)。
  • computeHeading() - 返回两个纬度/经度坐标之间的方位(以度为单位)。
  • computeArea() - 返回地球上某个闭合路径的面积(以平方米为单位)。
  • interpolate() - 返回位于两个给定点之间几分之一距离处的点的纬度/经度坐标。举例来说,您可以利用它以动画方式呈现两点间的标记。

请参阅参考文档,了解该实用程序提供的所有方法。