Rozhraní map.MapService se používá pro napojení na konkrétní mapovou službu (OpenStreetMap, Google, apod.). Slouží a) jako zdroj rastrových dat (poskytuje URL adresu konkrétní dlaždice) a b) pro transformaci mezi geografickými souřadnicemi a souřadnicemi pravoúhlými.
Třída map.BaseMapService obsahuje metody a atributy nezávislé na kontrétní službě a slouží jako bázová třída, od které se odvozují konktétní mapové služby. Třída implementuje metodu validZoom. V kontruktoru se detekuje, zda-li je nastaven Flash parametr proxy a pokud ano, sestaví adresu, která se použije pro načítání dlaždic. Existují dva důvody, proč použít proxy. Jedním je bezpečnostní mechanismus Flash playeru, který neumožní načíst data z jiné domény v případě, že tato doména neobsahuje soubor pravidel crossdomain.xml. Dalším důvodem může být cachování dat.
Z důvodu rychlosti jsou často volané metody implementovány jako inline funkce a jejich parametry jsou voleny tak, aby nebylo nutné zbytečně alokovat objekty pokud to není opravdu nutné.
map.MapService (interface)
lonlat2tile(lon:Float, lat:Float, zoom:Int) : TileID
Metoda vrací identifikace dlaždice (TileID), která obsahuje zadané geograf. souřadnice. Hodnota zoom odpovídá absolutní hodnotě přiblížení v rozsahu definovaném parametry služby.
tile2lonlat(t:TileID) : LonLat
Inverzní metoda k předchozí metodě. Funkce vrací geografické souřadnice levého horního rohu dané dlaždice.
lonlat2XY(lon:Float, lat:Float, zoom:Int) : Point
Metoda převádí geograf. souřadnice na pravoúhlé tak, aby pro dané rozlišení odpovídali souřadnicím používaným v rámci objektu Layer. Hodnota zoom odpovídá absolutní hodnotě přiblížení v rozsahu definovaném parametry služby.
XY2lonlat(x:Float, y:Float, zoom:Int) : LonLat
Inverzní metoda k předchozí metodě. Funkce transformuje pravoúhlé souřadnice na souřadnice geografické. Hodnota zoom odpovídá absolutní hodnotě přiblížení v rozsahu definovaném parametry služby.
validZoom(z:Int) : Bool
Metoda vracející hodnotu True v případě, že hodnota relativní úrovně přiblížení z je v mezích daných parametry služby.
tile2url(t:TileID) : String
Metoda používaná pro získání URL adresy určité dlaždice. V případě, že je ID dlaždice neplatné je možné vrátit prázdný řetězec.
Haxemaps integruje v současné době podporu pouze pro služby, které mají definovánu politiku pomocí crossdomain.xml
.
OpenStreetMap je volně dostupná služba a její licenční podmínky dovolují používat mapové podklady ve vlastní aplikaci. OpenStreetMap používá mechanismus dlaždic, který je používán i řadou ostatních služeb jako je Google Maps, Microsoft Bink, apod. Konkrétně se jedná se o projekci typu Mercator.
map.mapservice.OpenStreetMapService (extends BaseMapService, implements MapService)
OpenStreetMapService(default_zoom:Int = 13)
Konstruktor vytvoří službu poskytující přístup k dlaždicím Open Street Map a dále realizující Mercator projekci.
map.mapservice.BingMapService (extends OpenStreetMapService)
BingMapService(default_zoom:Int = 13)
Konstruktor vytvoří službu poskytující přístup k dlaždicím Microsoft Bing Maps, použita je stejná projekce jako v předchozím případě.
K napojení na Google Maps je možné využít třídu OpenStreetMapService, neboť využívá stejné zobrazení. Její veřejné použití však musí být dle licenčních podmínek povoleno společností Google a proto není součástí projektu. Dlaždice Google Maps lze zpřístupnit pomocí následujícího kódu.
Zdrojový kód: Služba Google Map
class GoogleMapService extends OpenStreetMapService { override public function new(default_zoom:Int = 13) { super(); setInfo("Google Maps", "gog", 0, 18, default_zoom, 256); } override public function tile2url(t:TileID) : String { if (!isValid(t)) return ""; return "http://mt"+Math.floor(Math.random() * 3.5)+ ".google.com/vt/x=" + (t.x) + "&y=" + (t.y) + "&z=" + (t.z); } }