W ramach update, dla tych, którzy nie klikają w dzień w dzień
Od tygodnia odświeżony został layout stron z mapami WWW:
http://mapa.ump.waw.pl/ump-www/Generalnie zostały podlinkowane ze sobą główne funkcjonalności (duży podgląd, edytor markerów, formularz) oraz dodana została szukaczka. Istniejące linki do mapy oraz strony korzystające z map.js lub iframe.html nie powinny odczuć różnic, bo starałem się ich nie zepsuć przy okazji
Formularz codziennie zbiera kilka do kilkunastu zgłoszeń, które lądują na
flyspray, gdzie przy okazji jest również wyświetlana mapka, którą można użyć przy zgłaszaniu, do wskazania punktów (przycisk "dodaj punkt z mapy do opisu" między mapą a treścią zgłoszenia)
Szukaczka ma dwa "tryby":
- Klikanie, aby poznać szczegóły obiektów pobliżu
- Po nazwie, aby wyszukać obiekty.
W pierwszym przypadku wystarczy kliknąć na mapie, aby pojawiły się chorągiewki znalezionych punktów lub miast. Zakres poszukiwań (promień i zbiór typów) zależy od aktualnego Zoom. Im bliżej tym mniejszy promień i bardziej szczegółowe wyniki. Wyszukiwaniu podlegają jedynie punkty (POI i miasta)
W drugim przypadku można wpisać słowa należące do nazwy. Wielkość liter nie ma znaczenia, ale polskie znaki już tak. Wpisanie więcej słów zawęża wynik do tych obiektów, które zawierają wszystkie wpisane wyrazy. Wyszukiwane są tylko punkty.
W obu przypadkach po lewej stronie jest klikalna lista wyników (zawężona do maks 20 pozycji) ze skrótowym opisem. Po najechaniu na którąś z chorągiewek rozwija się dokładniejszy opis. Kliknięcie na chorągiewkę powoduje, że dymek nie znika, np. można zaznaczyć tekst i skopiować do schowka. Jak ktoś zajrzy pod maskę, to zauważy, że zapytania są dość prosto budowane, a wynik jest zwracany w xml'u, co daje szanse wykorzystania do innych niecnych celów. Niestety api może się zmienić, ale raczej już tylko wzbogacone o nowe funkcje, gdy okaże się niewystarczające.
Wyszukiwarka jest w fazie testowej i jeszcze nieokreślony jest ostateczny wygląd i zachowanie. Aktualnie są dwa pola tekstowe nazwa i miasto, które mogą być uzupełnione w dowolnym zestawie (tylko nazwa, tylko miasto, miasto+nazwa). Niestety istniejąca wyszukiwarka w OSM okazała się nieprzydatna (proste zapytanie o stacje benzynową trwało 7s i generowało ~200 zapytań sql), więc muszę tworzyć nowe rozwiązanie od podstaw.
W planach mam m.in.:
- dodanie ignorowania polskich znaków (własna wtyczka do postgresql?),
- wyszukiwanie w pobliżu klikniętego punktu,
- wyszukiwanie nie tylko punktów (bez numeru domu),
- dopracowanie przybliżania po kliknięciu pozycji na liście wyników (przypisanie sensownych zoom)
ale wszystko ograniczone jest dostępnością wolnego czasu, gdyż zajmuję się tym w ramach hobby.
W ciągu miesiąca od pierwszej publicznej odsłony zaszło również sporo zmian w wizualizacji, m.in:
- wizualizacja zakazów ruchu >>Przykład<<
- rysowanie linii tramwajowych, przystanków, stacji kolejowych i metra >>Przykład<<
- rysowanie kolorowych szlaków i ścieżek pieszych/rowerowych >>Przykład<<
- wizualizacja tuneli oraz wiaduktów (szczególnie pomocne na wielopoziomowych ślimakach) >>Przykład<<
Oczywiście mile widziane propozycje zmian i uwagi, które o ile starczy wolnego czasu wezmę pod uwagę.
Routing może nie być w bliżej określonym czasie, bo nie jest to trywialna sprawa. Pozostaje napisanie od podstaw jakiegoś silnika lub wykorzystanie czegoś z OSM:
http://www.yournavigation.org/Ogólnie rzecz biorąc przy UMP-www można by napisać kilka prac dyplomowych, a ja już swoje mam za sobą
Przy okazji trochę statystyk: w moim cache jest 3.7GB danych o 1.7mln kafelków, których przemalowanie zajęłoby ok 14h. Jeden kafelek to obrazek 256x256 pikseli. W ramach aktualizacji co kilka dni generowane i przesyłane na serwer pośredni jest tylko 320tyś kafelków. Stanowi to 1GB i generacja trwa ok 3h, a przesłanie na serwer cachujący ok 1h-5h w zależności od zmian. Reszta jest generowana i podsyłana dynamicznie w miarę oglądania.
Gdyby chcieć wygenerować cały obszar Polski, dałoby to ok 100mln kafelków (ok 1.5mln plików na dysku), 200GB danych i na moim 6-letnim kompie (PIV 2.4Ghz) trwałoby ok miesiąca
. Na lepszym serwerze czas skróciłby się oczywiście kilkukrotnie, ale przy tak częstych aktualizacjach nie ma sensu generować wszystkiego, tylko to co najczęściej oglądane, a reszta w razie potrzeby.