Jak stworzyć mapę

Z tego artykułu dowiesz się jak stworzyć dodatkowe mapy dla modułu geolokalizacji.

^ Wprowadzenie

System map jest nowością wydania 4.9. Używane są do prezentacji danych na stronach modułu geolokalizacji. Wszystkie mają jednolitą budowę (opisaną poniżej), poza zestawem world, ze względu na to, że jest wykorzystywany do prezentacji dwóch trybów, krajów oraz kontynentów.

Mapy przechowywane są w folderze share/maps/, instalacja i de instalacja polega na dodaniu lub usunięciu całego folderu mapy.

^ Budowa

^ Plik mapy

Każda mapa musi posiadać własny plik map.png. Obrazek powinien posiadać białe tło, a tereny lądów powinny mieć odcień oscylujący w okolicach barwy #EEEEEE. Nie powinien zawierać kolorów innych niż dwa wcześniej wymienione.

Jeśli dany kraj ma wydzielone regiony (można sprawdzić ich listę w pliku share/data/regions.ini, w sekcji o nazwie będącej identyfikatorem kraju), to należy uwzględnić ten podział poprzez naniesienie granic o szerokości jednego piksela (obszary regionów nie mogą się łączyć, nawet jednym pikselem!).

^ Plik współrzędnych

Plik coordinates.ini jest opcjonalny i zawiera współrzędne regionów (położenie granic), wykorzystywane do oznaczenia (dymki narzędziowe oraz dodatkowy opis w przypadku odwiedzin z danego regionu) ich na wyświetlanej mapie (mapa obrazkowa). Plik ten zawiera tabelę o budowie: klucz - identyfikator regionu (według pliku share/data/regions.ini), wartość - współrzędne na obrazku mapy (można je wygenerować z użyciem edytorów map obrazkowych).

^ Plik konfiguracyjny

Plik map.ini zawiera konfigurację mapy oraz podstawowe informacje na jej temat. Posiada formę typowego pliku INI, ze wszystkimi zaletami i wadami tego formatu.

Plik ten składa się z sekcji o następujących opcjach:

  • Information - sekcja informacji o mapce;
    • Author - autor mapy;
    • URL - odnośnik autora mapy;
    • Licence - licencja;
    • Time - czas ostatniej modyfikacji, uniksowy znacznik czasu;
  • Options - sekcja opcji;
    • LegendLocation - położenie legendy na mapie (przesunięcie od lewej i od góry, w pikselach);
  • Data - sekcja danych - lista par współrzędnych punktów wewnątrz wydzielonych obszarów;

W przypadku obszarów niejednolitych (np. państw z wyspami) wpisy w sekcji danych zawierają dodatkowe pary (dla np. wysp) oddzielone przecinkami.

Przykładowy plik konfiguracyjny (mapa pl):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[Information]
Author = "Emdek"
URL = "http://estats.emdek.cba.pl"
Licence = "GPL"
Time = "1179521170"
[Options]
ScaleLocation = "30|300"
[Data]
1 = "100,200"
2 = "200,100"
3 = "200,200"
4 = "350,200"
5 = "50,150"
6 = "250,300"
7 = "300,150"
8 = "150,250"
9 = "300,300"
10 = "350,100"
11 = "150,50"
12 = "200,250"
13 = "250,250"
14 = "250,50"
15 = "150,150"
16 = "60,60,20,60"

^ Budowa przykładowej mapy (pl)

Posiadanie wszystkich plików nie jest wymagane, część jest nieobowiązkowa, a część (wymagane pliki zawierające bloki) zostanie automatycznie pobrana z lib/theme w przypadku braku.

Na diagramie można zobaczyć budowę przykładowego katalogu mapy:

  • pl/ [wymagany - główny katalog mapy, nazwa taka jak identyfikator kraju]
    • coordinates.ini [opcjonalny - współrzędne jednostek podziału]
    • map.ini [wymagany - plik konfiguracyjny]
    • map.png [wymagany - plik mapy]

^ Działanie

Obsługę map możemy podzielić na dwa etapy: pierwszy to wygenerowanie z niej pliku graficznego z użyciem biblioteki GD, a drugi, to opcjonalne wygenerowanie mapy obrazkowej umożliwiającej interakcję z mapą, identyfikację jej jednostek podziału, poprzez nazwanie ich.

Generowanie pliku polega na pokolorowaniu wybranych jednostek podziału z użyciem danych z pliku map.ini, sekcji Data. Każda para współrzędnych z odpowiedniego wpisu wskazuje położenie piksela od którego ma zacząć się wypełnianie obszaru aż do napotkania granicy (koloru o lokalizacji 0, 0 na mapie - musi on mieć kolor tła / granic!). Na końcu generowana jest legenda (we wskazanym miejscu) wskazująca jaki kolor odpowiada maksymalnej wartości (oraz ile ona wynosi) i minimum (a pomiędzy nimi rozkład kolorów pośrednich). Dodatkowo mapa krajów wyjątkowo używa dodatkowego pliku ze współrzędnymi umiejscowienia flag.

W przypadku istnienia pliku współrzędnych (coordinates.ini) generowana jest mapa obrazkowa z zaznaczonymi obszarami. Posiadają one przypisane dymki narzędziowe z informacjami oraz, w wypadku zliczenia odwiedzin z ich obszaru, blok z dodatkowymi informacjami.

^ Zakończenie

Stworzenie własnej mapy wymaga sporo samozaparcia (szczególnie jeśli mamy do czynienia z bardziej skomplikowaną), ale skutki pracy są zwykle bardzo efektowne :-). Jeśli stworzyłeś jakąś mapkę, to skontaktuj się ze mną (najlepiej za pośrednictwem odpowiedniego działu forum) i pokaż wynik swojej pracy, być może zostanie dołączony do bazy Pobieralni, lub do samego pakietu ze skryptem. Jeśli masz jakieś dodatkowe pytania, to nie wstydź się ich zadawania ;-).
Powodzenia!

Ostatnia modyfikacja: 2008-02-16 12:50:00 CET

Mówienie bez myślenia to jak strzelanie bez celowania.

Zbigniew Herbert