0

ユーザーが長押ししてカスタムオーバーレイを配置できるマップを作成するプロジェクトに取り組んでいます(Google APIを使用)。これまでのところ、ユーザーが 1 つのオーバーレイを配置できるようにしましたが、2 番目のオーバーレイを配置しようとすると、プログラムがクラッシュします。メソッドが同じ変数名を再利用しようとするためだと思いますか? これが私が使用しているコードの一部です。これを達成する方法についての助けをいただければ幸いです。

@Override
public void onLongPressFinished(MotionEvent e, ManagedOverlay overlay, GeoPoint point, ManagedOverlayItem item) {                   
    if (item != null)
        Toast.makeText(getApplicationContext(), "You selected..." + item.getTitle() + "!", Toast.LENGTH_LONG).show();

        ManagedOverlay managedOverlay = overlayManager.createOverlay("listenerOverlay", getResources().getDrawable(R.drawable.tankicon));

        managedOverlay.createItem(point, "text");

        overlays.add(managedOverlay);
        overlayManager.populate();
    }
}
4

2 に答える 2

0

この問題を解決するために、longPressの代わりにonDoubleTapメソッドを使用しました。longPressは、誤解される可能性があり、場合によっては機能しないため、問題が発生する可能性があることが判明しました。

ただし、コードの大部分は同じです。

@Override
public boolean onDoubleTap(MotionEvent e, ManagedOverlay overlay, GeoPoint point, ManagedOverlayItem item) {
    ManagedOverlay managedOverlay = overlayManager.createOverlay("Location", getResources().getDrawable(R.drawable.icon));

    managedOverlay.createItem(point, "place");
    overlays.add(managedOverlay);
    Toast.makeText(getApplicationContext(), "You selected " + managedOverlay.getName() + " !", Toast.LENGTH_LONG).show();
    overlayManager.populate();
于 2011-05-24T20:38:25.100 に答える
0

これをお試し下さい。これは、マップ ビューに複数のオーバーレイを表示するために使用されます。問題が解決する可能性があります: https://github.com/donnfelker/android-mapviewballoons

于 2011-05-24T06:23:47.127 に答える