about myself   PHP & linux   linkownia

^..powrót..^

"Stadtplan"

"Stadtplan" oznacza po niemiecku "plan miasta" i stworzyłem go właśnie w tym celu. Miałem olbrzymi plik z planem miasta, ktory chcialem umieścić na mojej stronie. Jedynym sensownym rozwiązaniem było pociecie go na kawałki pasujące szerokością i długością do strony. Miało to jednak tę wadę, że w wielu przypadkach pocięte zostały na rożne kwadraty ważne budynki i ulice. Wielką pomocą okazał się GIMP.

Przygotowanie mapy

W wersji 1.2 dla Linuxa można polożyć na obrazek linjie pomocnicze (engl. "grid") jako raster (kratka) o wybranej wielkości. Ja wybrałem 100 na 100 pikseli. W filtrach w kategorii "web" (w Linuxie) istnieje funkcja "perlotine", która potnie obrazek według ustawionej wcześniej kratki. Otrzymamy przez to plik np.: perlotine.html zawierający tabelke o ramce (engl. "border") = 0 z ulożonymi odpowiednio częściami mapy. Te części mapy znajdują się albo w podkatalogu, albo w tym samym katalogu co plik HTML (możesz sam ustawić w opcjach perlotine przed cięciem). Potrzebujemy tylko tych obrazków! Skopiuj je do jakiegoś katalogu w Tojej stronie intenetowej (najlepiej wlasny katalog dla nich).

Konfiguracja

Ściągnij i otwórz teraz Stadtplan.zip. Jest w nim katalog "img" ze strzałkami do poruszania się po mapie oraz skrypt o nazwie "stadtplan.php". Strzałki skopiuj z całym katalogiem do miejsca w któym znajduje się już katalog z częściami mapy (poprzedni akapit) albo kopiuj tylko strzałki do jakiegoś innego katalogu (np. do tych części mapy) - w tym wypadku będziesz musiał zmienić też URL do tych strzałek.
Otwórz skrypt w edytorze i uważaj, żeby nie poprzesówał komentarzy do następnych linii (wrapping), bo pojawią się błędy.
Piewsze co zmieniasz, o ile chcesz, to jest nazwa samego skryptu (nie koniecznie). Jeżeli nie chcesz używać mojej nazwy skrypu zmień też zmienną '$name = "Stadtplan.php";' (tylko zawartość znaków cytatu = ").
Drugie to katalog, w którym znajdują się przygotowane kawalki mapy (poprzedni akapit). przykład: $dir = "perlotine2";
Trzecie zadanie to zmiana prefiksu. Jest to prefiks, który wybrałeś dla kawałków mapy w ustawieniach "perlotine" z minusem na końcu (wszystko do pierwszej liczby). Jeżeli nie chciałeś prefiksu, to wszystkie pliki będą zaczynać się od minusa, wiec nie mieniaj nic ('$prefix = "-";'). przykład dla prefiksu "mapa" bedzie $prefix = "mapa-";
Czwarte to szerokość (ile kawałków ma być obok siebie: szerokość pomnożona przez szerokość kawałka da Ci szerokość naszej mapki) a piąte to wysokość (podobnie jak w czwartym). przykład dla kawałka o 100 pikselach: $width = 4; $height = 4; da nam mapke o wielkości 400x400 pikseli.
W '$imagesX = 23;' należy podac ilosc kawałków, które utworzył perlotine dla X czyli szerokości. Kolejnosc kawałka od lewej do prawej to druga liczba w nazwie kawałka (np.: w kawlek-5-12.jpg bedzie to 12). Chodzi tu o najwyższą liczbę czyli ostatni (prawy) kawalek. Podobnie w '$imagesY = 13;' - jest to wysokość. Te dane będą potrzene, żeby nie wychodzić poza obrazek (wyobraź sobie, że ktoś klika cały czas strzałkę na prawo i wychodzi poza obrazek... jak temu zapobiec? Ten skrypt sprawdza automatycznie, czy nie wychodzisz poza obrazek - w tym wypadku klikanie na prawo nic nie da, bo skrypt będzie podawał tylko ostatnie cztery kawałki spawdzając właśnie tę zmienną).
O statnie cztery zmienne to właśne te strzałki, o których mówiłem. Jeżeli nie przesunąłeś ich do innego katalogu, tylko zostawiłeś w "img", to wszystko powinno być gotowe. Inaczej mnień w atrybucie 'scr' ich URL. Mozesz zastąpić je też tekstem! Jak kto woli!

Uruchamianie

Skrypt tem musi być uruchamiany z podanymi zmiennymi X, Y, modeX, modeY. X podaje kolejność od lewej do prawej, Y od góry do dołu. 'modeX' to orientowanie podanego w X i Y kawałka: left = z lewej, middle = w centrum, right = z prawej. Podobnie 'modeY': upper = u góry, middle = w środku, bottom = u dołu.

Możesz sterować tą mapą, jeżeli wrzucisz ją do IFRAME'u np:
<iframe src="http://www.heilsberg.org/pl/Stadtplan.php?X=10&Y=4&modeX=left&modeY=upper" name="MAPA" width="450" marginwidth="0" height="470" marginheight="0" align="middle" scrolling="auto" frameborder="0">Plan miasta jest chwilowo niedostepny. Przepraszam. Kontakt pod adresem ...</iframe>
stworzy to ramkę wewnątrz strony i tylko ona będzie wciąż odnawiana a nie cała strona. Możesz stworzyć linki, typu:
<button onClick=" window.open('Stadtplan.php?modeX=middle&modeY=middle&X=13&Y=9', 'MAPA', '')">Pokaż</button>
będą one na nowo ładowały ramkę z nową koordynacją. Ciekawą rzeczą jest, że przez nadanie dla IFRAME atrybutu 'name=MAPA' można otwierać też z innej IFRAME na tej samej stronie mapkę. Ważne jest dodanie tylko skryptu
<script language="JavaScript1.3">
var MAPA = opener.MAPA;
</script>

podajesz więc tylko przez JavaScript onClick = "window.open('URL', 'MAPA', inne 'atrybuty')" odpowiedni URL. Jeżeli znasz niemiecki zobacz, jak ja to rozwiązałem na http://www.heilsberg.org/seiten/Stadtplan.html

Wypróbuj sam!

http://www.heilsberg.org/pl/Stadtplan.php?X= &Y= &modeX= &modeY=