Hlavní navigace

Mapový server snadno a rychle (7)

Jáchym Čepický

V minulých dílech se nám podařilo vytvořit celkem slušivou mapserveří aplikaci, dnes budeme pokračovat v jejím vylepšování. Nakonec si vypomůžeme Java appletem.

Měřítko

Měřítko mapy je další nepostradatelná věc, která by neměla chybět. V podstatě máme dvě možnosti, jak jej vyjádřit: pomocí číselného údaje (například 1:10 000), nebo pomocí grafického měřítka (jakéhosi pravítka) na mapě (nebo vedle ní).

První (textový) příklad získáme prostě vložením tagu [scale] do šablony stránky, například:

<!-- obrázek s mapou -->
1:[scale]<br>
<input type="image" name="img" src="[img]" width="400" height="300" border="0">
<!-- /obrázek s mapou --> 

Grafické pravítko pak definujeme v mapfilu:

WEB
    [...]
    SCALEBAR
        IMAGECOLOR 255 255 255
        LABEL
          COLOR 0 0 0
          SIZE TINY
        END
        STYLE 1
        SIZE 100 2
        COLOR 0 0 0
        UNITS kilometers
        INTERVALS 2
        TRANSPARENT FALSE
        STATUS EMBED
    END # Scalebar object ends
    [...] 

ObjektSCALEBAR může být definován několika atributy. Zmíním pouze parametr STATUS, který je nastaven na hodnotu EMBED  – což znamená, že pravítko bude integrováno do výsledného obrázku s mapou.

Vylepšení funkcí pomocí Java appletu

Dělám-li nějakou webovou stránku, snažím se, aby byla tato stránka a její funkce přístupná pro co největší počet potencionálních čtenářů – bez ohledu na platformu nebo browser, ve kterém se na stránku dívají. Java applety rozhodně nepatří mezi technologie, které by byly z tohoto pohledu bezproblémové.

Applet jBox ovšem patří mezi programy, které svou přidanou hodnotou bohatě převyšují své případné nedostatky. jBox umožňuje „hezčí” funkci zoom (zvětšování), unzoom a pan (posun), stejně jako některé další funkce, které by pomocí DHTML šly naprogramovat jen těžko.

Instalace jBoxu (na straně serveru) spočívá ve vystavení dvou souborů ( jBox.class a jBox.jar) na web a lehkém překopání naší HTML šablony. Stáhněte si soubor jBox.zip a rozbalte jej někde ve vašem domovském adresáři. Vytvořte adresář /var/www/mapserver/jbox/ a nakopírujte do něj soubory jBox.jar a jBox.class.

Naši šablonu upravíme následujícím způsobem:

<!-- obrázek s mapou -->
1:[scale]<br>
<applet
    codebase="/jBox/"
    archive="jBox.jar"
    code="jBox.class"
    width="400"
    height="300"
    name="jBox"
    MAYSCRIPT>
    <param name="image" value="http://[host][img]">
    <param name="verbose" value="true" id="verbose" >

</applet>
<!-- /obrázek s mapou --> 

Dále musíme do stránky přidat nějaké ty Java Scriptové funkce a další formulářová políčka. Nejdříve ta políčka:

<!-- skryté proměnné -->
[...]
<input type="hidden" name="imgbox" value="-1 -1 -1 -1">
<!-- /skryté proměnné --> 

A nyní již zbývá do hlavičky stránky doplnit první Java Scriptovou funkci. Ta se stará o nastavení patřičných hodnot do formulářových polí a nakonec stránku reloaduje:

[...]
<title>Moje první Mapserveří aplikace</title>
<script language="JavaScript">
        function setbox_handler(name, minx, miny, maxx, maxy) {
          document.mapserv.imgbox.value = minx + " " + miny + " " + maxx + " " + maxy;
          document.mapserv.imgxy.value = minx + " " + miny;
          document.mapserv.submit();
        }

        function seterror_handler(message) {
          window.alert(message);
        }
</script>
[...] 

Ještě je vhodné pomocí Java Scriptu změnit chování appletu po najetí myší, odpovídající funkce doplníme do atributu  onClick:

<input type="radio" name="zoomdir" value="1" onClick="document.jBox.setcursor('crosshair'); document.jBox.boxon();" [zoomdir_1_check]> Zvětšení |
<input type="radio" name="zoomdir" value="0" onClick="document.jBox.setcursor('hand'); document.jBox.dragon();" [zoomdir_0_check]> Posun |
<input type="radio" name="zoomdir" value="-1" onClick="document.jBox.setcursor('crosshair'); document.jBox.boxoff();" [zoomdir_-1_check]> Zmenšení | 

Po kliknutí na patřičnou funkci a najetí myší do oblasti mapy dojde ke změně kurzoru a i k jeho chování.

jBox je ovládán jednak pomocí některých javascriptových funkcí a jednak pomocí tagů <param ...> . Lze měnit vzhled kurzoru myši, barvu a šířku rámečku a další vlastnosti.

jBox je na svém místě, příště si ukážeme, jak s jeho pomocí přidat další funkce.

Našli jste v článku chybu?