Ha egy réteg elemeihez neveket is akarunk írni a térképre, akkor egyrészt a réteg objektumban a LABELITEM
elemmel meg kell határozni, hogy melyik attribútum legyen a név,
másrészt az osztályokban egy LABEL
objektumban definiálni kell az adott osztályhoz tartozó betűtípust és egyebeket.
... LABELITEM "Nev" ... CLASS ... LABEL TYPE bitmap SIZE medium COLOR 0 0 0 END END # class ...
Ha egy rétegen több osztályt is definiálunk, akkor ez azt is jelenti, hogy minden osztálynál meg kell adni ezt a LABEL
objektumot.
Ez néha jó (ha pl. a különböző településkategóriákat más méretű betűkkel írjuk meg), néha azonban meglehetősen kényelmetlen (mondjuk egy egyszerű tematikus rétegnél, ahol csak a felületi szín változik).
Ez utóbbi esetben célszerű egy külön név réteget (annotation layer) készíteni. Az ilyen rétegek a geometriai alakzatokat nem jelenítik meg, csak a hozzájuk tartozó neveket:
... LAYER NAME "Megye_nevek" TYPE annotation DATA "megyek.shp" STATUS DEFAULT PROJECTION "init=epsg:23700" END LABELITEM "Nev" CLASS NAME "megyenevek" LABEL TYPE bitmap SIZE medium COLOR 0 0 0 END END # class megyenevek END # layer Megye_nevek ...
Ha nem akarunk font-fájlokkal bajlódni, akkor a legegyszerűbb megoldás a beépített betűtípusok használata.
Ehhez az előző példákban is használt TYPE bitmap
definícióra van szükség.
A bitmap betűtípusoknál csak ötféle méret létezik (ezt mondjuk meg a SIZE ...
sor segítségével):
tiny, small, medium, large, giant
. Ezek így mutatnak:
megjegyzés: Sajnos a Mercatoron jelenleg futó Maprever verzióban problémák vannak az ékezetes betűkkel bitmap betűtípusok esetén, így célszerűbb truetype fontokat használni.
A bitmap betűtípusokkal gyorsabban dolgozik a MapServer, de nem túl nagy a választékuk. Emiatt sokszor célszerű truetype fontokat alkalmazni.
A megfelelő .ttf
fájlokat el kell helyezni a szerveren, és a használni kívánt típusokat definiálni egy külön fájlban (melynek neve hagyományosan fonts.list
):
arial arial.ttf arial-bold arialbd.ttf
Erre pedig hivatkozzunk a MAP
objektumban:
... FONTSET "fonts.list" ...
Ezek után a LABEL
elem a következőképp nézhet ki:
... LABEL TYPE truetype FONT arial SIZE 12 COLOR 0 0 0 END ...
Példa a truetype címkékre:
Hogy ne kelljen mindenkinek ttf fontokat a szerverre másolni, itt van egy fontlist a mercator néhány saját fontjával. Ezek így néznek ki:
A LABEL
objektumhoz rengeteg beállítás tartozik még, ezek teljes leírása itt megtalálható.
Ezek közül a legfontosabbak:
POSITION ...
- azt határozza meg, hogy a nevet a hozzá tartozó pontszerű elemhez képest hova tesszük.
Két betűs kód követi, melyből az első betű a függőleges (u = upper, c = center, l = lower) , a második a vízszintes elhelyezésre (l = left, c= center, r = right) utal.
Pl.: POSITION ur
- a pontokhoz képest jobbra fent legyenek a nevek. A kétbetűs kódok helyett használhatjuk az auto
beállítást is; ekkor a MapServer megpróbálja a legkedvezőbb módon elhelyezni a neveket.PARTIALS true/false
- ha true
, akkor azok a nevek is a térképre kerülnek, amik félig kilógnak a kivágatból.ENCODING ...
- segítségével meghatározhatjuk, hogy milyen kódolásúak a szövegek, amiket éppen ki akarunk iratni.
Ez nagyon előnyös, ha többféle kódolású alapanyaggal dolgozunk.A legtöbb esetben a MapServer mozaikolva küldi a térképet a kliens oldali megjelenítőnek. Ilyenkor a mozaikdarabok határán megszakadhatnak a nevek. Ez elkerülhető, ha a neveket tartalmazó rétegeken beszúrjuk a következő sort a mapfile-ba:
... LAYER ... PROCESSING "LABEL_NO_CLIP=ON" ... END ...