0

私の問題は次のとおりです。

複数のアイテム化されたオーバーレイを作成しています。(すべてのオーバーレイが異なるドローアブルを取得するため) アイテム化されたオーバーレイ クラスをカスタマイズしましたが、それを mapview オーバーレイに追加すると、クラスがオーバーレイ クラスに変換されます。さらに悪いことに、同じマップ上にオーバーレイを作成する 3 つのクラスを取得しました。各クラスは、その背後にある独自の知性を持つマップ上のアイテムを表します。

私が今抱えている問題は、オーバーレイを削除したいということですが、オーバーレイを挿入したインデックスが、削除しようとしたときに持っているインデックスでもあるかどうかはわかりません。(その間に他のクラスがオーバーレイを挿入した可能性があります)

クラスは自己更新であるため、メインクラスから更新または削除イベントを発生させるソリューションは必要ありません。(全体のポイントは、クラスを追加してそれを忘れることです)

私の質問は次のとおりです。そのレイヤーで削除を呼び出したいときに、どのレイヤーがどれであるかをどのように識別できますか。情報は入手できると思いますが、入手方法がわかりません。これは、オーバーレイを追加するために使用しているコードです

 OverlayItem overlayitem = new OverlayItem(p,myNaam ,myOmschrijving );

    LocationOverlay = new MyLocationOverlay(drawable, myContext);

    LocationOverlay.SetLocation(i,overlayitem);

    myOverlays.add(LocationOverlay);
4

2 に答える 2

0

特定のレイヤーを削除する必要はありません。参照によって指定されたオーバーレイを削除できます (例: myOverlay )。

LocationOverlay myOverlay = new MyLocationOverlay(drawable, myContext); //you forgot the name of variable

mapView.getOverlays().remove(myOverlay);

于 2012-06-06T08:06:58.253 に答える
0

次のようなすべてのオーバーレイの位置として特定の整数を設定できます。

mapView.getOverlays().add(0,myScaleBarOverlay);

そして、この呼び出しを削除したい場合:

mapView.getOverlays().remove(0);
mapView.invalidate();

由来

于 2017-04-08T07:57:57.860 に答える