2

先月、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 グループでのディスカッション

あなたの考えを共有していただければ幸いです!

4

0 に答える 0