Pl:Tworzenie własnej Slippy Mapy

From OpenStreetMap Wiki
Jump to navigation Jump to search

Tworzenie własnej Slippy Mapy jest popularnym sposobem użycia OSM. Zazwyczaj oznacza to integrację slippy map, która pokazuje mapę Tiles na twojej stronie za pomocą kodu JavaScript.

Chcesz mapę OpenStreetMap na swojej stronie?

Możesz umieścić swoją istniejącą mapę w swojej witrynie, tak, jak to robią mapy Google lub Yahoo. Ale dla pełnej elastyczności OpenStreetMap oferuje możliwość integracji samo powstających map dostosowanych do ich własnych specyfikacji z danych OSM.

Jak mapa OpenStreetMap trafia na twoją stronę

To jest najłatwiejszy krok, ale powinieneś być pewien, że ten krok zadziała, zanim spróbujesz innych rzeczy.
Można to zrobić za pomocą jednej z następujących "JavaScript mapy":

  • Leaflet (leafletjs.com) - darmowa biblioteka JavaScript o otwartym kodzie źródłowym z lekkim, łatwym w użyciu interfejsem API z wieloma wtyczkami.
  • OpenLayers (openlayers.org) - bogatą w funkcje biblioteka JavaScript o otwartym kodzie źródłowym.
  • Google Maps Example - pokazuje, jak korzystać z Google Maps API do prezentacji map OSM.
  • Mapstraction (mapstraction.com) - to open source JavaScript łączący powyższe biblioteki (i kilka innych) pozwalający na zamianę twojego wyboru dostawcy biblioteki map bez ponownego kodowania czegokolwiek.
  • Karten Generator - tworzy kod HTML do integracji map OSM.

Tworzenie własnej interaktywnej mapy

Twoja witryna zawiera kody HTML i JavaScript (być może), ale obrazy kafelków mapy nadal są pobierane przez przeglądarkę z serwerów OSM. Należy pamiętać, że nie ma gwarancji dostępności serwera ani jakości mapy.
Jeśli spodziewamy się dużego ruchu na swojej stronie, przedyskutujmy to wcześniej na OpenStreetMap developer discusssion

Tworzenie kafelka mapy za pomocą Mapnika i generate_tiles.py

Metodę tę wykorzystuje na przykład OSM cycle map. Główną zaletą jest to, że nie musi to działać na serwerze sieciowym. Wszystko czego potrzebujemy to katalog plików graficznych.
Możemy zainstalować to wszystko na komputerze w domu i przenieść tylko kafelki mapy do serwera WWW, kiedy skończymy.

  • Pobieramy "plik planety" z planet.openstreetmap.org
  • Importujemy go do bazy danych PostGIS za pomocą osm2pgsql.
  • Instalujemy Mapnik aby przetestować go za pomocą osm.xml i generate_image.py
  • Jeśli wszystko działa, używamy generate_tiles.py, aby wygenerować tysiące kafelków w specjalnej strukturze plików
  • Kopiujemy kafelki na twój serwer sieciowy.
  • Zmieniamy ustawienia w aplikacji OpenLayers, aby wyświetlić własne kafelki.

Tworzenie kafelków mapy za pomocą Mapnika i mod_tile

Jest to system stosowany od 2008 roku dla mapy w OSM. Używa niestandardowej implementacji języka C do wydajnego dostarczania kafli z systemu plików i planowania procesów renderowania.

  • Pobieramy "plik planety" z planet.openstreetmap.org
  • Importujemy go do bazy danych PostGIS za pomocą osm2pgsql.
  • Instalujemy Mapnik aby przetestować go za pomocą osm.xml i generate_image.py
  • Kompilujemy i instalujemy mod_tile.
  • Uruchamiamy "demona" renderowania i upewniamy się, że ma uprawnienia do zapisu w folderze kafelków.
  • Konfigurujemy Apache, aby załadować moduł.
  • Zmieniamy ustawienia w aplikacji OpenLayers, aby wyświetlić własne kafelki.

Tworzenie kafelków mapy za pomocą Mapnika i MySQL/Ruby/Python

System ten był używany prawie cały czas w 2007 roku dla mapy w OSM. Kafelki mapy były dostarczone przez skrypt Ruby, który ładował kafelki z bazy danych MySQL. W przypadku przestarzałych lub brakujących kafelków, został on zaznaczony w bazie danych w celu ponownego renderowania, następnie skrypt w tle renderował te kafelki.

  • Pobieramy "plik planety" z planet.openstreetmap.org
  • Importujemy go do bazy danych PostGIS za pomocą osm2pgsql.
  • Instalujemy Mapnik aby przetestować go za pomocą osm.xml i generate_image.py
  • Kopiujemy skrypty z SVN tile.openstreetmap.org
  • Instalujemy bazę danych kafelków w MySQL za pomocą pliku schema.sql.
  • Instalujemy mod_ruby na swoim serwerze internetowym, aby wykonać cat_tile.rb.
  • Konfigurujemy mod_rewrite z następującą regułą do wykonania skryptu Ruby:

RewriteRule ^//(-?[0-9]+)/(-?[0-9]+)/(-?[0-9]+).png /ruby/cat_tile.rb?x=$2&y=$3&z=$1 [PT,T=image/png]

  • Stosujemy, okresowo, render_some_tiles.rb, aby wykonać żądanie renderowania.
  • Zmieniamy ustawienia w aplikacji OpenLayers, aby wyświetlić własne kafelki.

Tworzenie kafelków mapy za pomocą Mapnika i tilecache

Ta metoda pozwala wygenerować mapę podczas jej przeglądania, zamiast wymagać wstępnego renderowania. Może zmagać się z wyższymi poziomami obciążenia, jeśli zbyt wiele osób jednocześnie próbuje wygenerować niepotrzebne kafelki. Musimy mieć pełną kontrolę nad swoim serwerem internetowym, aby zainstalować wszystko.

  • Pobieramy "plik planety" z planet.openstreetmap.org
  • Importujemy go do bazy danych PostGIS za pomocą osm2pgsql.
  • Instalujemy Mapnik aby przetestować go za pomocą osm.xml
  • Konfigurujemy tilecache, aby renderować kafelki na żądanie.
  • Zmieniamy ustawienia w aplikacji OpenLayers, aby wyświetlić własne kafelki.

Tworzenie kafelków mapy za pomocą Osmarender/Tiles@Home

Pobierz najnowszy klient tiles@home z SVN (nazywa się tilesGen.pl).
Zmieniamy plik konfiguracyjny aby zawierał LocalSlippymap=DirectoryName, i określamy "DirectoryName", które ma zawierać wygenerowane kafelki.
Ilekroć teraz przetworzymy tileset (uruchamiając perl tilesGen.pl xy xxxx yyyy, gdzie xxxx i yyyy są współrzędnymi x i y "level-12" poziomu, które chcemy renderować), tilesGen.pl będzie twórzył kafelki w obszarze "DirectoryName" w strukturze katalogów odpowiednich do obsługi kafelków za pośrednictwem serwera WWW.
Pierwszym elementem katalogu będzie prefiks warstwy (skonfigurowany w pliku layers.conf, na wypadek gdyby istniało więcej niż jedna warstwa!).
Następnie pojawi się poziom powiększenia, a następnie współrzędna x i plik y.png.

Będziemy potrzebowali skryptu lowzoom.pl do tworzenia kafelków dla poziomów powiększenia 11 i mniejszych z kafelków, które wygenerowaliśmy. Nie jesteśmy pewni, czy/jak to działa z LocalSlippymap.

Aplikacja mapy (UI)

Niezależnie od tego, czy korzystamy z Mapnika, czy Osmarendera, to do generowania kafelków, będziemy potrzebowali interfejsu internetowego do ich przeglądania.

Logika, która wykonuje powiększanie i przesuwanie jest zwykle zaimplementowana w JavaScript. Możemy użyć "OpenLayers" lub "Google API", aby uzyskać dostęp do kafelków.
W obu przypadkach musimy jakoś dodać swoją warstwę do listy warstw dostępnych do wyboru, a dodanie swojej warstwy będzie wymagało określenia serwera WWW i ścieżki bazowej - interfejs doda wtedy /zoom/x/y.png w zależności od tego które kafelki potrzebuje. (Patrz Slippy map tilenames)

Używamy OpenLayers javascript dla naszej głównej mapy, a także na informationfreeway.org. Dokument OpenLayers 'Getting Started' wyjaśnia, jak zainicjować obiekt "map" w javascript. Aby to działało w naszym schemacie kafelkowym, potrzebujemy warstwy "TMS" i nieco więcej logiki javascript. Zobacz OpenLayers Simple Example. Aby uzyskać więcej funkcji "slippy map" (wspierających layer selector, permalinks, etc) powinniśmy zajrzeć do w javascriptowego źródła informacjifreeway.org.

Zobacz też

  • Switch2Osm.org - więcej informacji na temat serwowania własnych kafelków.
  • TileLauncher - darmowy, gotowy do użycia, serwer typu "tileserver" dla Amazon EC2. Za pomocą kilku kliknięć wybieramy kolory motywu, typ produktu Amazon, swój region, wprowadzamy swoje dane uwierzytelniające i naciskamy "Launch". [1].
  • Slippy map tilenames#Tile servers, TMS dla listy niektórych dostawców kafelków.
  • Cartaro - framework do osadzania map w różnych systemach CMS, szczególnie Drupal.
  • Fedora użytkownicy mogą korzystać z pakietu i postępować zgodnie z instrukcjami dostarczonych przez Keith Sharp aby zbudować "slippy map".