在Android Google Maps API的原始版本中,使用以下代码实现叠加非常简单:
List<Overlay> mapOverlays = mapView.getOverlays();
AlarmOverlay alarmOverlay = new AlarmOverlay();
mapOverlays.add(alarmOverlay);
...然后可以覆盖覆盖draw()方法和绘制矢量图形,覆盖onTouchEvent()方法的叠加并提供自定义控件等。
我不知道如何在v2中构建类似的自定义控件,因为API参考中没有提到叠加的用例(并且标记和多边形是不够的)。有人建议在v2中实施吗?
答案 0 :(得分:3)
如果您需要将自己的图像放在地球表面,请使用GroundOverlay。方法addGroundOverlay添加了这样的图像。需要GroundOverlayOptions才能指定图片大小和位置(以长期术语表示)以及BitmapDescriptor,除其他选项外,还可以使用普通Bitmap作为图像源。因此,您可以创建一个新的位图,围绕此位图创建Canvas并在那里绘制。
如果您需要绘制一些非常复杂的东西,那么这似乎是一种很好的方法,对于那些多边形和标记来说是不够的。此外,可以重用使用Canvas的旧代码。
我没有做足够的测试,我们在更新位图后很快就会更新地图。在最坏的情况下,地面覆盖可能需要removed并添加新的地面覆盖。位图本身可能仍然可以重复使用。
将额外的组件放在顶部可能会有问题,因为它必须支持缩放,移动并且地图现在甚至是3D。