先月、Google マップ API や自国の他の API などのマップ API を使用してアプリを作成しました。それらは適切にカプセル化されており、使いやすいです。次に、API がどのように構築および編成されたかを理解したいと思います。
その過程で、osmand、mapsforge、osmdroid という 3 つのオープン ソース プロジェクトが私のニーズを満たすことがわかりました。
写真は Android の Google マップ アプリのスクリーンショットで、ベース マップ、いくつかのマーカー、および情報ウィンドウを示しています。ご存知のように、ユーザーはマーカーと情報ウィンドウに触れることができ、タッチ ジェスチャに応答することができます。
ここで最初の質問です。
1.ベースマップ上に描画されるマーカーや情報ウィンドウView/ViewGroupと絵要素はどっちがいい?
- osmand では、マーカーは画像要素であり、情報ウィンドウはカスタム ダイアログです。
- mapsforge では、マーカーのみがあり、マーカーは画像要素です。
- osmdroid では、どちらも画像要素です。
マーカーと情報ウィンドウのタッチイベントについて。
osmand では、ユーザーがマップをロングタッチすると、情報ウィンドウが表示されます。ユーザーは、ウィンドウにタッチしてさらに別のことを行うこともできます。ロングタッチ イベントがアクティブになると、レイヤーの 1 つがイベントをインターセプトし、それらの抽象レイヤーを介してディスパッチします。複雑な計算とプロセスの後、そのポイントに情報ウィンドウが表示されます。マーカーは後で置くことができ、タッチしても反応しません。
mapsforge はマーカーのタッチ イベントを実装していません。
- osmdroid については、掘り下げていません。
これら 3 つのマーカーと情報ウィンドウのタッチ イベント ハンドルは、Google マップ API や以前に使用した他の API ほど完全には実装されていません。
これが私の考えですか?
それらがビューの場合、MapView は ViewGroup であるか、container(ViewGroup) と BaseMap(View) の組み合わせである必要があります。
- 利点: タッチ イベントを処理する方が簡単かもしれません。
- 欠点: マップが移動するときは、MapView とそれらの間の相対的な関係を十分に考慮する必要があります。
それらが画像要素の場合、MapView は単に View (または ViewGroup) にすることができます。
- 利点: 上記の相対関係は問題ではありません
- 欠点: タッチ イベントは適切に計算および処理する必要があります。
今のところ:
では、2 番目の質問です:</p>
2.Marker と MapView の基本クラスの組み合わせをどのように選択すればよいですか? 各組み合わせの利点と欠点は何ですか?
mapsforge Google グループでのディスカッション
あなたの考えを共有していただければ幸いです!