首页 > 解决方案 > 独立于使用的基本瓦片地图填充标记和折线。(用于 android 的 Leaflet 的替代品)

问题描述

我想创建一个地图应用程序并希望基础平铺地图是可更改的(谷歌地图、地图框等)。我想要做的是在瓦片地图顶部有一个透明层,并在该顶层上绘制所有标记和路径,这样无论用户选择哪个基本瓦片地图,标记和路径都保持不变。

我正在寻找leafletandroid 的替代品。

标签: androidgoogle-mapsleafletgismapbox

解决方案


由于您将使用的几乎所有地图程序:MapsMapzen等都使用在 XML示例 1或示例 2(如下)中定义地图的类似逻辑:

<com.google.android.gms.maps.MapView android:id="@+id/mapview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" />

您可以使用的方法是在布局中定义多个地图,根据您需要的任何因素显示或隐藏它们,然后利用存储在 Activity 中的数据来填充它们。

例如,假设您想在问题中使用标记,当您放置标记时,获取纬度(double)、经度(double) 和markerId (String),将它们存储到您的 Activity 中的 List / Set 对象中然后在交换地图时,您可以再次“放置”标记,因为您具有绘制所述标记所需的相同值。

如果您想从单击的标记中提取纬度和经度,此代码有一个示例说明如何执行此操作。

关于您的路径,您可以记录起点和终点的纬度/经度点,然后将它们重新绘制/放置在可见前面的任何地图上。

这同样适用于您的缩放级别和您要存储的任何其他杂项;您只需要找到共同点并使用它们存储在数据集中来放置和重新绘制前景中的任何地图。

这实际上归结为您希望如何管理数据以及如何在地图之间“交换”。

请记住,如果地图都在后台维护其数据而不可见,则此方法可能会占用大量 CPU。每当您将地图移动到不可见或消失时,您都应该删除标记和绘制的路径。


推荐阅读