2017-12-23 20 views
0

Androidスタジオを使用してJavaでアプリをプログラミングしています。 osmdroidを使用してマップを表示しました。特別な場所にマーカーを表示するためにいくつかのオーバーレイを追加し、タイトルにマーカー&を追加しました。Osmdroid:クリック時のマーカーの表示と非表示

ここでは、setFocusItemsOnTapメソッドを使用して、クリック時にマーカーの説明&の説明を表示します。 私が問題になっているのは、もう一度クリックしたときにマーカーのタイトル(&)を隠すことができないということです。これを行う方法はありますか?

もしかしたら、setFocusItemsOnTabメソッドを使って、一度に1つのマーカーのタイトル&の説明だけを表示する方法がありますか?

public static List<OverlayItem> items = new ArrayList<OverlayItem>(); 

//[...] 

items.add(new OverlayItem("uid1","Title", "Description", new GeoPoint(51.398,6.875))); 

//[...] 

List<OverlayItem> currentList; 
currentList = new ArrayList<OverlayItem>(); 
     currentList.add(items.get(i)); 

//[...] 

final ItemizedOverlayWithFocus<OverlayItem> mOverlay = new ItemizedOverlayWithFocus<OverlayItem>(this, currentList, new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { 
       @Override 
       public boolean onItemSingleTapUp(final int index, final OverlayItem item) { 
        //here it should decide if the title & description is already shown or not. (true => hide it, false => display it) 
        return true; 
       } 
       @Override 
       public boolean onItemLongPress(final int index, final OverlayItem item) { 
        return false; 
       } 
     }); 

mOverlay.setFocusItemsOnTap(true); 

私は別のマーカーを追加したいと私はそれらのすべてを集中できるようにしたかったので、私は、コードのこれらの部分を使用する必要があります。また、私は実行時に動的リストにそれらを追加することができる必要があります。

ありがとうございました!

答えて

1

ItemizedIconOverlayを使用している場合は、一度に1つのポップアップしか使用できないと思います。 ItemizedIconOverlayをサブクラス化し、描画メソッドをオーバーライドして、一度に複数のアイテムのポップアップをレンダリングすることをサポートする必要があります。

私はMarkerクラスでもっとうまくいくと思います。これは既にクリック・クローズ機能をサポートしています。ここでも、一度に表示できるマーカーポップアップは1つだけです。これは、各マーカーに独自のInfoWindowインスタンスを指定することでオーバーライドできます。

+0

私はItemizedOverlayWithFocusの代わりにItemizedIconOverlayを使用し、osmbonuspackを使用して解決しました – Steve

関連する問題