0

MapView.LayoutParams コンストラクターに x 座標と y 座標を追加したとき。その MODE_VIEW 動作はなくなります。x座標とy座標とともにこの動作が必要です。なぜこれが起こっているのか、私は問題を抱えていません。

public void addMarkerToMAp(GeoPoint geoPoint) {
    mapView.removeAllViews();

    final ImageView view = new ImageView(mapView.getContext());
    view.setImageResource(R.drawable.map_marker_anim);
    view.post(new Runnable() {
        @Override
        public void run() {
            AnimationDrawable animationDrawable = (AnimationDrawable) view.getDrawable();
            animationDrawable.start();
        }
    });

    mapView.addView(view);
    MapView.LayoutParams layoutParams = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT,
        MapView.LayoutParams.WRAP_CONTENT,
        geoPoint,
        MapView.LayoutParams.MODE_VIEW);
    view.setLayoutParams(layoutParams);
}

だから、私はgeoPointを

geoPoint = mapView.getProjection().fromPixels((int)event.getX(), (int)event.getY()); イベントはクリックイベントです。

また、(event.getX()、event.getY())でマーカーピンを表示したいのですが、クリックの下に表示されます。

4

1 に答える 1

0

Eclipse でコーディングする場合は、ctrl+shift+f を押します。これにより、コードが読みやすくなります。そうは言っても、マーカーを表示するとき、どのポイントを使用しますか? 間違っていない場合、挿入するポイントは、オーバーレイ ドローアブルの場合は左下になります。

それがビューの場合は左上にあり(私はそれがあなたがしていることだと思います)、そのためクリックの下に表示されます。

-view.getWidth()/2 および -view.getHeight/2 であることに、offsetx および offsety を追加できます。これにより、ビューが押されたポイントの真下の中央に配置されます。ただし、view.getWidth/Height の取得に問題がある可能性があるため、0 を返さないようにしてください。

于 2012-05-23T12:09:39.653 に答える