0

私はアプリで作業して、MapViewにお気に入りのサイトのリストを入力しています。これで、MapViewにすべてのマーカーがありますが、このマーカーの1つを押すと、別のアクティビティを起動するイベントを実行したいと思います。

X座標とY座標を取得するonTouchイベントを実行しようとしました。その後、このGeoPointがデータベースにあるかどうかをデータベースで確認しますが、ジオポイントが多くの小数で非常に正確であり、取得するのが非常に難しいことを確認することはできません。私がデータベースに持っているのと同じです。

問題は、このマーカーでイベントを実行する方法はありますか?

4

1 に答える 1

1

「お気に入りのサイトのリスト」の場合、適度な数のサイトを想定するItemizedOverlayと、使用する一般的なオーバーレイです。onTap()それを使用している場合は、ユーザーがタップした特定のマーカーのインデックスを提供するをオーバーライドするだけです。

Overlayの代わりにを使用している場合はItemizedOverlay、次のようなものを使用して、ユーザーのタップされた座標に最も近いデータベース内のアイテムを見つけることができます。

SELECT MIN(ABS(Latitude - ?) + ABS(Longitude - ?)), _ID FROM Sites GROUP BY _ID LIMIT 1;

ここで、緯度と経度を2つの要素として指定し、必要に応じて列名String[]rawQuery()調整します。私はこのクエリを個人的に試したことがないので、SQLiteへの変換に問題がある可能性があることに注意してください。

(T-SQLから派生:マップグリッド上のオブジェクトの最も近い場所を見つける

于 2012-05-28T11:22:44.710 に答える