9

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

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

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

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

4

1 回答 1

3

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

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

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

将附加组件放在顶部可能会有问题,因为它必须支持缩放、四处移动,而且地图现在甚至是 3D。

于 2013-02-01T08:08:13.650 回答