9

Android Google Maps API の元のバージョンでは、次のコードを使用してオーバーレイを実装するのは非常に簡単でした:

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

...その後、オーバーレイの draw() メソッドをオーバーライドしてベクター グラフィックスを描画したり、オーバーレイの onTouchEvent() メソッドをオーバーライドしてカスタム コントロールを指定したりできました。

オーバーレイのユースケースが API リファレンスに記載されていないため (そしてマーカーとポリゴンでは十分ではないため)、v2 で同様のカスタム コントロールを設計する方法について途方に暮れています。v2 で実装するための提案された方法はありますか?

4

1 に答える 1

3

地球の表面に独自の画像を配置する必要がある場合は、GroundOverlay を使用します。メソッドaddGroundOverlayは、そのような画像を追加します。画像のサイズと位置 (長期的には) を指定できる GroundOverlayOptions と、その他のオプションの中でも通常のビットマップを画像ソースとして使用できるBitmapDescriptorを使用します。したがって、新しいビットマップを作成し、このビットマップの周りにキャンバスを作成してそこにペイントできます。

本当に複雑なものを描画する必要がある場合、そのポリゴンとマーカーでは不十分な場合に適したアプローチのようです。また、Canvas に描画する古いコードはおそらく再利用できます。

ビットマップを更新した後、マップが更新されるまでの時間を十分にテストしていません。最悪の場合、グラウンド オーバーレイを削除して、新しいグラウンド オーバーレイを追加する必要があるかもしれません。ビットマップ自体はおそらくまだ再利用できます。

追加のコンポーネントを上部に配置すると、ズームや移動をサポートする必要があり、マップが 3D になっているため、問題が生じる可能性があります。

于 2013-02-01T08:08:13.650 に答える