android - 在 Android Google Maps API v2 中实现覆盖的建议方法是什么?

标签 android google-maps google-maps-android-api-2

在原始版本的 Android Google Maps API 中,使用以下代码很容易实现覆盖:

List<Overlay> mapOverlays = mapView.getOverlays();
AlarmOverlay alarmOverlay = new AlarmOverlay();
mapOverlays.add(alarmOverlay);

...然后可以覆盖覆盖层的 draw() 方法并绘制矢量图形,覆盖覆盖层的 onTouchEvent() 方法并提供自定义控件等。

我不知道如何在 v2 中构建类似的自定义控件,因为 API 引用中没有提到覆盖的用例(标记和多边形还不够)。有人有建议的 v2 实现方式吗?

最佳答案

如果您需要将自己的图像放置在地球表面上,请使用 GroundOverlay。方法addGroundOverlay添加这样的图像。需要 GroundOverlayOptions允许指定图像大小和位置(在经纬度方面)以及 BitmapDescriptor在其他选项中,可以使用普通的 Bitmap作为图像源。所以你可以创建一个新的位图,创建Canvas围绕这个位图并在那里绘制。

如果您需要绘制非常复杂的东西,这似乎是一个很好的方法,对于那些多边形和标记是不够的东西。此外,在 Canvas 上绘制的旧代码可能可以重复使用。

我还没有做足够的测试,我们更新位图后 map 将在多长时间内更新。在最坏的情况下,地面覆盖层可能需要 removed并添加了新的地面叠加层。位图本身可能仍然可以重复使用。

在顶部放置额外的组件可能会有问题,因为它必须支持缩放、四处移动并且 map 现在甚至是 3D。

关于android - 在 Android Google Maps API v2 中实现覆盖的建议方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14105531/

相关文章:

android - 将 Android ListView "categories"贴到顶部

java - 从 .csv 文件加载标记时如何获取标记的位置?

google-maps - 通过 HTTPS 的 Google Maps API v3?

java - 无法创建谷歌地图 fragment

java - Android 创建 BitmapDescriptor 异常

google-maps-android-api-2 - 如何使用 "nativescript-google-maps-sdk"获取谷歌地图中的当前位置?

java - 如何从 Windows 8 在 Android 设备上安装 Android 应用程序?

android - 初始化项目时的“java.lang.NoSuchFieldError: ConstraintLayout_Layout_layoutDescription”

java - 使用简单的 xml 序列化程序 (v2.6.6) 文档没有根元素异常

java - 将 Google map 添加到 Flutter 时找不到 API key