在原始版本的 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/