在Android Google Maps API的v2中实现叠加的建议方法是什么?

时间:2012-12-31 19:48:04

标签: 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中实施吗?

1 个答案:

答案 0 :(得分:3)

如果您需要将自己的图像放在地球表面,请使用GroundOverlay。方法addGroundOverlay添加了这样的图像。需要GroundOverlayOptions才能指定图片大小和位置(以长期术语表示)以及BitmapDescriptor,除其他选项外,还可以使用普通Bitmap作为图像源。因此,您可以创建一个新的位图,围绕此位图创建Canvas并在那里绘制。

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

我没有做足够的测试,我们在更新位图后很快就会更新地图。在最坏的情况下,地面覆盖可能需要removed并添加新的地面覆盖。位图本身可能仍然可以重复使用。

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