Flex i Google Maps API – okna informacjyne

June 9th, 2010 by Piotr Wierzgała Leave a reply »

Okna informacyjne pozwalają wyświetlać dane w tak zwanych “dymkach” pojawiających na mapie po kliknięciu w marker.

okno informacyjne

Spis treści

Aplikacja

Poniższa aplikacja pozwala na przetestowanie działania większości pól opcji okna informacyjnego. Dostęp do źródła można uzyskać poprzez kliknięcie prawym przyciskiem myszy w obszar aplikacji i wybranie opcji “View Source” z menu kontekstowego.

Otwarcie okna informacyjnego

Okno informacyjne nie posiada konstruktora. Jest tworzone jedynie poprzez wywołanie metody openInfoWindow klasy Marker. Na poniższym przykładzie przedstawiony jest sposób otwarcia okna informacyjnego w funkcji obsługującej zdarzenie kliknięcia w marker:

private  function marker_CLICK(event:MapEvent):void {
    event.target.openInfoWindow();
}

Metoda openInfoWindow przyjmuje dwa opcjonalne parametry:

  • options: Obiekt klasy InfoWindowOptions definiujący właściwości okna informacyjnego.
  • useSeparatePane: Wartość logiczna określająca czy okno informacyjne zostanie wygenerowane na własnej warstwie. Podczas korzystania z mapy 3D domyślnie okno informacyjne generowane jest na tej samej warstwie co marker dzięki czemu jest umieszczane w tej samej odległości od obserwatora co marker. Ustawienie tego parametru na true w przypadku korzystania z mapy 3D wymusi wygenerowanie okna informacyjnego na oddzielnej warstwie tak jak ma to miejsce w przypadku korzystania z mapy 2D.

Opcje okna informacyjnego

Za pomocą obiektu klasy InfoWindowOptions możemy ustawić następujące właściwości okna informacyjnego:

  • content: Treść pojawiająca się w oknie informacyjnym.
  • contentFormat: Obiekt typu TextFormat definiujący wygląd treści podanej w polu content.
  • contentHTML: Treść pojawiająca się oknie informacyjnym zapisana w formacie HTML.
  • contentStyleSheet: Obiekt typu StyleSheet definiujący arkusz stylów treści okna informacyjnego.
  • cornerRadius: Stopień zaokrąglenia narożników okna informacyjnego.
  • customCloseRect: Obiekt typu Rectangle określający obszar, w obrębie którego kliknięcie będzie zamykało okno informacyjne. W przypadku kiedy ustawiona jest własność customContent wtedy wyznaczony obszar zamykający okno nie będzie widoczny, ale pozostanie aktywny. Natomiast w przypadku kiedy własność customContent jest równa null wtedy obszar customCloseRect może zostać użyty do w celu narysowania przycisku zamykającego okno w wybranym miejscu.

    Poniższy rysunek pokazuje domyśle ustawienie przycisku zamykającego okno oraz jego przykładowe ustawienie za pomocą pola customCloseRect.

    customCloseRect
  • customContent: Obiekt typu DisplayObject, który zostanie narysowany zamiast okna informacyjnego.
  • customOffset: Obiekt typu Point określający przesunięcie obiektu zdefiniowanego w polu customContent. W przypadku kiedy pole customContent nie jest ustawione lub kiedy pole drawDefaultFrame posiada wartość true wtedy pole customOffset nie będzie brane pod uwagę podczas rysowania okna informacyjnego.
  • drawDefaultFrame: Wartość logiczna określająca czy okno informacyjne mają być rysowane jako tło obiektu zdefiniowanego w polu customContent.

    Poniższy rysunek przedstawia zestawienie wyniku rysowania okna informacyjnego ze zdefiniowanym polem customContent przy włączonej i wyłączonej opcji drawDefaultFrame..

    drawDefaultFrame
  • fillStyle: Obiekt typu FillStyle określający styl wypełnienia okna informacyjnego.
  • hasCloseButton: Wartość logiczna określająca czy na oknie informacyjnym będzie rysowany przycisk zamykający.
  • hasShadow: Wartość logiczna określająca czy okno informacyjne będzie rzucało cień na mapę.
  • hasTail: Wartość logiczna określająca czy okno informacyjne będzie posiadać ogon.
  • height: Wysokość okna informacyjnego.
  • padding: Wielkość odstępu pomiędzy tytułem i treścią okna informacyjnego a jego obramowaniem.
  • pointOffset: Obiekt typu Point określający przesunięcie okna informacyjnego.
  • strokeStyle: Obiekt typu StrokeStyle określający styl obrysowania okna informacyjnego.
  • tailAlign: Wyrównanie ogona okna informacyjnego. Dostępne wartości tego pola to:
    • InfoWindowOptions.ALIGN_LEFT,
    • InfoWindowOptions.ALIGN_CENTER,
    • InfoWindowOptions.ALIGN_RIGHT.
  • tailHeight: Wysokość ogona okna informacyjnego.
  • tailOffset: Obiekt typu Point określający przesunięcie ogona okna informacyjnego.
  • tailWidth: Szerokość ogona okna informacyjnego.
  • title: Nagłówek okna informacyjnego.
  • titleFormat: Obiekt typu TextFormat definiujący wygląd napisu podanego w polu title.
  • titleHTML: Nagłówek okna informacyjnego zapisany w formacie HTML.
  • titleStyleSheet: Obiekt typu StyleSheet definiujący arkusz stylów tytułu okna informacyjnego
  • width: Szerokość okna informacyjnego.

Przykładowe zastosowanie:

var infoWindowOptions:InfoWindowOptions = new InfoWindowOptions({
    fillStyle: new FillStyle({
        color: 0xffffff,
        alpha: 1
    }),
    strokeStyle: new StrokeStyle({
        color: 0x000000,
        alpha: 1,
        thickness: 2
    }),
    title: "Title",
    hasTail: true,
    hasCloseButton: true,
    contentHTML: "<b>ContentHTML</b>",
    padding: 10,
    widht: 320,
    height: 100,
    tailOffset: 20,
    pointOffset: new Point(0,-60),
    drawDefaultFrame: false,
    hasShadow: false,
    cornerRadius: 20
});

Żeby zastosować tak stworzony obiekt klasy InfoWindowOptions przekazujemy go jako parametr metody openInfoWindow klasy Marker.

Advertisement

Leave a Reply

Flexmaniaks on Facebook