タッチイベントの上にあるすべてのオブジェクトを識別するために、GeoPointをスクリーンポイントに変換したいと思います。だから、私はこれを試しました:
Projection projection = this.mapView.getProjection();
GeoPoint gie = new GeoPoint(lat, lon);
Point po = new Point();
projection.toPixels(gie, po);
ただし、po.xとpo.yは画面座標ではなく、マップビュー座標がlat、lonではなくピクセル単位です。
アンドロイド開発者のウェブサイトから:
toPixels(GeoPoint in、android.graphics.Point out)指定されたGeoPointを、このプロジェクションを提供したMapViewの左上を基準にした画面上のピクセル座標に変換します。
それで、それを正しい画面座標に変換することは可能ですか?
上記の例のように、 + touchイベントの隣にあるすべてのxGeoPointを知りたいです。
----------------------------------------------------------------
(0,0) -----------> x |
| |
| |
| | <-- My screen
| + (touch event) |
\/ x (my GeoPoint) |
y |
|
----------------------------------------------------------------
私はそのようなタッチイベントを取得します:
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
ここで、このコードでは、xとyは実際の画面座標です(マップビューのものではなく、ハードウェアのもの)
GeoPointでx、y画面座標を変換して、GeoPointと比較することもできますが、ズームレベルが原因で、必要なものを取得できません。