android - 独立于使用的基本瓦片地图填充标记和折线。(用于 android 的 Leaflet 的替代品)
问题描述
我想创建一个地图应用程序并希望基础平铺地图是可更改的(谷歌地图、地图框等)。我想要做的是在瓦片地图顶部有一个透明层,并在该顶层上绘制所有标记和路径,这样无论用户选择哪个基本瓦片地图,标记和路径都保持不变。
我正在寻找leaflet
android 的替代品。
解决方案
由于您将使用的几乎所有地图程序:Maps、Mapzen等都使用在 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。每当您将地图移动到不可见或消失时,您都应该删除标记和绘制的路径。
推荐阅读
- android - (#100) 尝试将视频发布到 Facebook 页面时出现“主题应该是页面帐户”错误
- java - rxjava中throttleLatest和throttleLast有什么区别?
- keyboard - 有没有定义键码和/或键符的标准?
- go - 如何下载fabric-sdk-go的所有依赖?
- sql - SQL命令需要一个名为“@SessionID”的参数,在参数映射中没有找到
- vue.js - 为什么不改变我输入的值?
- sql-server - 在 MS SQL 的 WHERE 子句中如何制作案例
- c++ - 对从 Eigen 获得的特征值和特征向量进行排序的有效方法
- amazon-web-services - AWS Cloudformation 创建没有容器定义的任务定义
- php - 在 Mac 上安装 drush