2013-03-11 9 views
15

Piszę aplikację opartą na mapie na Androida przy użyciu aplikacji Maps API v2.Wiele okien informacyjnych w systemie Android Maps API 2

Mam już znaczniki umieszczone na mapie i mogę wyświetlać niestandardowe okna informacyjne dla tych znaczników, ale AFAICT może być wyświetlane tylko jedno okno informacyjne na raz. Jest kilka miejsc, w których chcę inne zachowanie: chcę zawsze wyświetlać okno informacyjne dla wielu okien, bez wyświetlania znacznika.

Przypuszczam, że mógłbym napisać jakiś kod, by narysować okna informacyjne na płótnach z mapami bitowymi i przekazać mapy bitowe jako znacznik "ikony". Ten rodzaj podsumowuje to, co staram się robić całkiem nieźle: chcę, aby okna informacyjne do były moich znaczników. Ale to podejście wymagałoby napisania własnego kodu rysowania ramek okna, którego wolałbym uniknąć.

Czy istnieje lepszy sposób obsługi więcej niż jednego okna informacyjnego jednocześnie?

Odpowiedz

19

W docs stwierdza:

Ponieważ istnieje tylko jedno okno Informacje przedstawione w tym samym czasie, to operator może zdecydować się na ponowne poglądy, lub może wybrać do tworzenia nowych poglądy na temat każdej metody wezwanie.

Nie można tego zrobić za pomocą zwykłych informacji, ale nie jest to zbyt trudne do tworzenia znaczników, które działają jako informacje.

Edit

bym utworzyć widok w formacie XML, który chcesz użyć jako markera/Dialog. Coś takiego:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:orientation="vertical" 
    android:background="@android:color/white" 
    > 
    <TextView 
     android:text="test" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
    <ImageView 
     android:src="@drawable/ic_launcher" 
     android:layout_width="50dp" 
     android:layout_height="50dp"/> 
</LinearLayout> 

Potem przekonwertować ten pogląd na bitmapę i użyć tej bitmapy jako mój marker:

 ImageView image = (ImageView) findViewById(R.id.main_image); 

     LinearLayout tv = (LinearLayout) this.getLayoutInflater().inflate(R.layout.test_layout, null, false); 
     tv.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
       MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
     tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight()); 

     tv.setDrawingCacheEnabled(true); 
     tv.buildDrawingCache(); 
     Bitmap bm = tv.getDrawingCache(); 
+0

Wszelkie wskazówki dotyczące sposobu, aby działać jako markery poglądów informacji? –

+0

@SorinComanescu Cóż, miałem zamiar pójść z czymś takim: http://stackoverflow.com/a/3036736/969325. Ale okazało się to trochę trudne, gdy nadwerężyłeś własne poglądy. Ale to byłaby ścieżka, którą wypróbowałbym. To powiedziawszy, nigdy tego nie robiłem i wydaje się, że nie ma zastąpienia starej metody dla map google (używając itemizedoverlay). – Warpzit

+2

@SorinComanescu Udało mi się to rozgryźć. Dodałem prosty przykład z wyjaśnieniem. – Warpzit

Powiązane problemy