地图{ #android_sdk_maps }¶
SDK 有一个 MapModule,用于下载和访问 DHIS2 中与地图有关的信息。
默认情况下,DHIS2 有一些基图:
- OpenStreetMaps
- 必应:需要在服务器中设置一个必应 api 密钥才能使其工作。
- Azure:需要在服务器中设置 Azure 地图 API 密钥才能使其工作。
此外,还可以在维护应用程序中定义自定义底图。
所有这些地图图层都会在单独的调用中下载:
d2.mapsModule().mapLayersDownloader().downloadMetadata()
重要**
SDK 只下载 BASEMAP 类型的地图。
然后,可以像往常一样使用相应的集合存储库访问地图图层:
d2.mapsModule().mapLayers()
.byName().eq("map_layer")
.withImageryProviders()
.get()
这些地图图层包含有用的信息,特别是使用地图 SDK 来显示它们:
- imageUrl:它可能看起来像
https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png。 - 子域:地图提供商通常会提供一个子域列表,例如
["a"、"b"、"c"、"d"]。 - subdomainPlaceholder:必须在 imageUrl 中替换的标记,本例中为
{s}。 - 外部:地图是用户定义的(外部)还是内置的(bing、azure、openstreetmaps)。
- linkedLayerUid:某些图层(如 Azure 混合图层)由多个地图图层组成。在这种情况下,该字段包含该图层应在其上呈现的基础图层的 UID。
通过遍历子域列表并使用占位符替换 url 中的占位符,可以直接获取 imageUrls 列表。