Třída Canvas implementuje a) vykreslovací plátno (okno mapové aplikace) a b) správce jednotlivých mapových vrstev.
map.Canvas (extends com.Component)
Canvas(interactive:Bool = true)
Konstruktor, který vytvoří instanci třídy Canvas, která má na starosti zobrazování a správu mapových vrstev. Hodnota parametru interactive určuje, zda-li bude vytvořena statická mapa nebo mapa interaktivní.
initialize()
Inicializuje vykreslovácí plátno a jednotlivé vrstvy - nastaví počátek, úroveň přiblížení, zahájí načítání dat a povolí vykreslování.
V případě, že ani jedna z vrstev nemá definován zdroj dat (MapService), skončí inicializace neúspěchem.
addLayer(layer:Layer, enable:Bool = true)
Přidá novou vrstvu, která se bude zobrazovat nad stávajícími. Je-li nastaven parametr enable, vrstva bude automaticky aktivována, tzn. proběhla-li již inicializace vykreslovacího plátna, je nově přidaná vrstva ihned inicializována.
Pokus o přidání již zaregistrované vrstvy skončí neúspěchem.
canvas = new Canvas(); canvas.move(0,0); canvas.setSize(300,300); canvas.addLayer(new TileLayer(new OpenStreetMapService(), 8)); canvas.addLayer(new VectorLayer()); canvas.initialize();
removeLayer(layer:Layer)
Odstraní vrstvu ze seznamu používaných vrstev a provede uvolnění zabraných zdrojů.
enableLayer(layer:Layer)
Aktivuje vrsvu layer
disableLayer(layer:Layer)
Deaktivuje vrstvu layer, tzn. zneviditelní vrstvu a přestane se aktualizovat při změně obsahu plátna její obsah.
layerEnabled(layer:Layer):Bool
Vrací true, je-li vrstva aktivní, tzn. je-li povoleno vykreslování.
Není-li vrstva zaregistrována pomocí metody addLayer, vrací hodnotu false.
updateLayer(layer:Layer)
V případě, že je vrstva registrována pomocí metody addLayer a povolena, provede vynucené překreslení vrstvy.
zoomIn()
Plynule o jeden krok zvýší rozlišení mapy (přiblíží mapu). Pokud libovolný z mapových zdrojů neposkytuje detailnější data případně již probíhá změna rozlišení, pokus o přiblížení je ignorován.
zoomOut()
Plynule o jeden krok sníží rozlišení mapy (odddálí mapu). Pokud libovolný z mapových zdrojů neposkytuje hrubší data případně již probíhá změna rozlišení, pokus o oddálení je ignorován.
setZoom(zoom:Int)
Nastavení konkrétní hodnoty relativního přiblížení (tzn. bez animace). Úroveň přiblížení se pohybuje v intervalu [-i,j], přičemž hodnota 0 odpovídá výchozímu rozlišení (dáno výchozí hodnotou mapové služby), hodnota menší než-li nula hrubšímu měřítku, hodnota kladná jemnějšímu měřítku. Mezní hodnoty jsou dány použitými mapovými podklady.
Pokus o nastavení přiblížení, které nedovolují použité mapové zdroje skončí neúspěchem.
getZoom():Int
Vrací relativní úroveň přiblížení (viz popis metody setZoom)
getMinZoom():Int
Vrací nejmenší možnou platnou hodnotu relativní úrovně přiblížení.
getMaxZoom():Int
Vrací největší možnou platnou hodnotu relativní úrovně přiblížení.
getCenter():LngLat
Vrací souřadnice bodu nacházejícího se ve středu aktuálního výřezu (uprostřed okna). Není-li aktivní ani jedna vrstva, je vrácena poslední známá poloha případně výchozí hodnota.
setCenter(point:LngLat)
Nastaví jednotlivé vrstvy tak, aby uprostřed výřezu byl bod s požadovanými souřadnicemi.
panTo(point:LngLat)
Postupně přesune mapu z aktuální pozice na pozici určenou parametrem point.
getLngLat(global:Point):LngLat
Vrátí geogr. souřadnice bodu na pozici global (globální pozice v pixelech vztažená k flash stage). Tuto metodu lze použít např. pro určení souřadnic bodu nacházejícího se pod kurzorem myši.
V případě, že není aktivní ani jedna vrstva, je vrácena hodnota null.
getLeftTopCorner():LngLat
Vrací souřadnice levého horního bodu aktuálního výřezu. V případě, že není aktivní ani jedna vrstva, je vrácena hodnota null.
getRightBottomCorner():LngLat
Vrací souřadnice levého horního bodu aktuálního výřezu. V případě, že není aktivní ani jedna vrstva, je vrácena hodnota null.
Instance třídy generuje tyto události
MapEvent.MAP_CLICKED - událost vyvolána při kliknutí do canvasu, proměnná point typu LngLat instance MapEvent obsahuje souřadnice bodu pod kurzorem myši v době kliknutí. Tato událost se od standardní události MouseEvent.MOUSE_CLICK liší v tom, že a) nedojde k její aktivaci při dvojkliku b) nedojde k její aktivaci došlo-li k posunu mapy.
MapEvent.MAP_MOUSEMOVE - událost se vyvolá při pohybu myši nad mapou, proměnná point instance MapEvent obsahuje souřadnice bodu pod kurzorem myši
MapEvent.MAP_MOVE - událost se vyvolá při jakémkoliv pohybu s mapou, proměnná point instance MapEvent obsahuje aktuální souřadnice středu odpovídající bodu uprostřed mapy
MapEvent.MAP_ZOOMCHANGED - událost se vyvolá při změně přiblížení, proměnná point obsahuje null
MapEvent.MAP_CHANGED - událost se vyvolá při každé změně mapy (při změně přiblížení, po inicializaci, přidání vrstvy a při pohybu s mapou), proměnná point obsahuje null
Příklad použití
import map.Canvas; function init() { canvas = new Canvas(); canvas.addEventListener(MapEvent.MAP_CLICKED, clicked); } function clicked(e:MapEvent) { trace("Canvas click at:" + e.point); }
com.Component - rozhraní pro snadnou manipulaci s objektem
move(x:Float, y:Float) - posunutí komponenty na souřadnice x,y
setSize(width:Float, height:Float) - nastavení rozměru komponenty