Flex i Google Maps API – wstęp

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

Zbiór informacji na temat bibiloteki Google Maps jakie można uznać za wstępne to: podstawowe warunki korzystanie z map, sposób dodania mapy w aplikacji, różne problemy związane z użytkowaniem map Google oraz przydatne linki.

Spis treści

Warunki korzystania z map

Pełną licencję korzystania z map Google można przeczytać tu lub podczas generowania klucza – o czym mowa w sekcji “Dodanie mapy do aplikacji“. Niektóre z najważniejszych warunków licencji na jakie zwraca uwagę Google to:

  • Nie ma żadnego limitu na liczbę stron wygenerowanych z użyciem Google Maps API.
  • Limit na liczbę geolokalizacji wynosi 2 500 na dobę. Po przekroczeniu tej bariery geocoder będzie zwracał błąd o statusie 620. Ten sam błąd może być zwracany również w przypadku zbyt częstego wysyłania zapytań o geolokalizację.
  • Korzystanie z usługi Google Maps musi być całkowicie darmowe i ogólnodostepne.
  • Google Maps nie zawiera żadnej formy reklamy narzuconej przez Google a gdyby miałoby się to zmienić użytkownicy zostaną o tym poinformowani z co najmniej 90-o dniowym wyprzedzeniem za pomocą subskrypcji lub grupy dyskusyjnej.
  • Nie zezwala się na zasłanianie lub edytowanie loga Google widocznego na mapie.

Całkiem dokładny opis warunków umowy znalazłem na blogu Macieja Marczewskiego i zgodnie z zasadą Ockhama nie będę mnożył bytów ponad potrzebę pisząc ponownie to samo tylko odsyłam wszystkich zainteresowanych na wspomniany blog.

Dodanie mapy do aplikacji

Zaczynamy od utworzenia klucza Google Maps API, dzięki któremu będziemy mogli korzystać z biblioteki Google Maps. Każdy wygenerowany klucz będzie działać tylko w obrębie domeny lub katalogu jaki podamy podczas generowania klucza. Nie ma ograniczenia na ilość wygenerowanych kluczy.

Następnie pobieramy interesujące nas biblioteki. W pobranym archiwum znajdziemy dwa pliki o rozszerzeniu swc. Wybieramy z nich ten, który ma w nazwie słowo flex i kopiujemy go do katalogu libs naszego projektu. Pozostały plik przeznaczony jest dla aplikacji typu AIR.

Na koniec dodajemy do aplikacji poniższy kod a jako wartość atrybutu ‘key‘ podajemy klucz, którzy przed chwilą wygenerowaliśmy.

<maps:Map id="map"
    key="Klucz_Google_Maps_API"
    mapevent_mapready="onMapReady(event)" />

W funkcji obsługującej zdarzenie mapevent_mapready umieszczamy kod, który zostanie wykonany po utworzeniu obiektu mapy. Jeżeli spróbujemy zrobić coś z mapą przed wywołaniem tego zdarzenia najprawdopodobniej zobaczymy błąd odwołania do obiektu typu null.

Przykładowa definicja funkcji obsługującej zdarzenie mapevent_mapready:

private function onMapReady(event:MapEvent):void {
    map.setCenter(new LatLng(50.06,19.94));
    map.addControl(new ZoomControl);
    map.addControl(new MapTypeControl);
}

Problem bindowania

Bindowanie nie działa z obiektami biblioteki Google Maps. Jeżeli chcielibyście w swojej aplikacji umieścić slider, który zmieniałby np. rozmiar markera na pewno nie osiągniecie tego przypisując polu value slidera wartosć pola radius markera.

<s:HSlider value="{marker.radius}"/>

Sposobem w jaki można to obejść jest dodanie nasłuchiwania na zdarzenie chage slidera i zmienianie rozmiaru markera w metodzie obsługującej to zdarzenie:

<fx:Script>
    <![CDATA[
        private function radiusSlider_CHANGE(event:Event):void {
            marker.getOptions().radius = event.target.value;
        }
    ]
</fx:Script>

<s:HSlider id="radiusSlider" change="radiusSlider_CHANGE(event)"/>

Problem został zgłoszony w odpowiednie miejsce już jakiś czas temu. Pod tym adresem można śledzić rozwój sytuacji.

Przydatne linki

Advertisement

2 comments

  1. Bardzo się cieszę, zlalazłem to co mnie interesuję. Chciałem podziękować że poświęciliście czas na napisanie ! Zdecydowanie cieszy mnie każdy nowy wpis na blogu.

  2. Może się nie znam, ale tekst napisany przejrzyście i rzeczowo.

Leave a Reply

Flexmaniaks on Facebook