Hlavní navigace

Mapový server snadno a rychle (6)

Jáchym Čepický 15. 12. 2005

V minulém díle jsme si vytvořili první šablonu, s jejíž pomocí jsme vygenerovali první HTML stránku. Dnes do ní budeme přidávat ovládací prvky jako legendu nebo referenční mapu.

Přidáváme ovládací prvky

Mapové vrstvy

Pro ovládání naší aplikace budeme nyní přidávat další formulářové prvky. Začneme přidáním ovládání pro to, jaké vrstvy se vlastně mají zobrazovat a jaké ne. Jako všechno ostatní i vrstvy se ovládají pomocí políček formuláře:

[...]
<td>
    <!-- vrstvy -->
    <input name="layer" value="modis" type="checkbox" [modis_check]>Družicový snímek<br>
    <input name="layer" value="staty_plochy" type="checkbox" [staty_plochy_check]>Plochy států<br>
    <input name="layer" value="staty_hranice" type="checkbox" [staty_hranice_check]>Hranice států<br>

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

[...] 

Ještě změňte status vrstvy modis na OFF a můžete reloadnout stránku.

Legenda

Máme dvě možnosti, jak vytvořit legendu: buď jako obrázek nebo pomocí HTML.

Obrázek

Obrázek je snazší možnost, ale výsledek není moc hezký. Vyrobí se prostě tak, že se do šablony vloží následující obrázek.

<img name="legend" src="[legend]"> 

a do mapfilu přidáme objekt LEGEND (třeba za  WEB):

# Legenda
LEGEND
    KEYSIZE 12 12
    LABEL
      TYPE BITMAP
      SIZE MEDIUM
      COLOR 0 0 89
    END
    STATUS ON
END 

HTML legenda

HTML legenda je podle mého vkusu lepší, můžeme ji formátovat například pomocí CSS spolu se zbytkem stránky. Výroba je o něco málo komplikovanější: musíme pro ni vyrobit šablonu. Do mapfilu, do objektu LEGEND, musíme vložit ještě jeden řádek:

# Legenda
LEGEND
    KEYSIZE 12 12
    STATUS ON
    LABEL
      TYPE BITMAP
      SIZE MEDIUM
      COLOR 0 0 89
    END
    TEMPLATE "/var/mapservdata/tmpls/legenda.html"
END 

A dále musíme tento soubor vytvořit.

[leg_class_html]
<tr>
  <td>
      <img src="[leg_icon width=20 height=10]" width=20 height=10>
  </td>
  <td>

      [leg_class_name]
  </td>
</tr>
[/leg_class_html] 

Do HTML šablony vložíme další klíčové slovo:

<!-- /vrstvy -->
<!-- legenda -->
<hr>

<table border=0 name="legend">
    [legend]
</table>
<!-- /legenda --> 

Nyní stačí už jen reloadovat stránku a legenda bude generována automaticky.

Referenční mapa

Malá mapička s vyobrazenou aktuální oblastí je nezbytnou součástí každé aplikace. Uživateli poskytuje přehled a může sloužit jako rychlá navigace po území. Pro její přidání musíme nejdříve přidat patřičné řádky do mapfilu a pak patřičné řádky do HTML šablony. Před vlastní editací mapfilu a šablony potřebujeme vytvořit obrázek referenční mapky a potřebujeme znát její hraniční souřadnice. Obrázek uložme do adresáře /var/mapservdata/tmpls/ a nazvěme jej refmap.png. Hraniční souřadnice této mapy převezmeme z celkového území. Patřičná část mapfilu by měla vypadat následovně:

REFERENCE
    IMAGE '/var/mapservdata/tmpls/refmap.png' # Obrázek s referenční mapou
    EXTENT 208398.01 -372335.44 1285308.08 632638.93 # hraniční souřadnice v projekci US Nat. Atl.
    STATUS ON #
    MINBOXSIZE 10 # Minimální velikost rámečku znázorňující aktuální oblast
    MAXBOXSIZE 150 # Maximální velikost rámečku znázorňující aktuální oblast
    COLOR -1 -1 -1 # Barva výplně rámečku -- nyní průhledná
    OUTLINECOLOR 0 255 0 # Barva rámečku
    MARKERSIZE 8 # Velikost značky, která se objeví po dosažení "MINBOXSIZE"
    MARKER 'cross' # Symbol, kterým bude zobrazen
END 

Do HTML šablony pak doplníme následující:

[...]
<!-- referenční mapa -->
<img name="ref" src="[ref]">
<hr>
<!-- /referenční mapa -->
<!-- vrstvy -->
[...] 

A aby toho nebylo málo, musíme si ještě napsat, jak má takový MARKER 'cross' vypadat. Do mapfilu vložíme ještě:

SYMBOL
  NAME "cross"
  TYPE vector
  POINTS
    2 0
    2 4
    -99 -99
    0 2
    4 2
  END
END 

Definice symbolů může být uložena i v samostatném souboru (což je mimochodem více než vhodné, máte-li více než 5 symbolů…). Nyní již vše vypadá, jak má.

Většina potřebných věcí je již na svém místě, příště budeme pokračovat.

Našli jste v článku chybu?
Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka