run Python script from PHP <– PHP <– JavaScript (3)

Co do tej pory robiliśmy? Przesyłaliśmy dane w postaci nazwy miejscowości i jej współrzędnych …zaraz zaraz, a czy sama nazwa miejscowości nie wystarczy? Gdyby tak (rozmarzymy się…) mieś bazę wszystkich miejscowości i ich współrzędnych (w Polsce to około 103tyś sprecyzowanych miejsc, >4000 jednostek administracyjnych i prawie 400 powiatów i miast -opisuje to TERYT).

Gdyby mieć taką bazę i po prostu zapytać o współrzędne?

Można też zapytać o to Google -udostępnia taką usługę, – miejsce na osobny wpis -jak odpytać Googla z miejscowości aby zbudować sobie taką bazę…

Spróbujmy zrobić coś takiego, aby wpisując nazwę miejscowości otrzymać jej współrzędne.

Na Django w wersji podstawowej może to wyglądać tak:

http://django.wiks.eu/lookfor

Działanie jest takie, że po każdej naszej akcji – wpisaniu kolejnego znaku nazwy z klawiatury, JavaScript wzmocniona AngularJS odpytuje server fragmentem nazwy i uaktualnia zawartość wyświetlanej strony. Zobaczcie:

Na powyższej stronie – korzystającej z własnej bazy danych, w której są wszystkie 103tyś miejsc TERYT, a około 50tyś z nich ma przypisaną pozycję geograficzną (zweryfikowane tylko miasta (ok. 400szt) i powiaty).

Ale ok. Skupmy się na AngularJS. – frameworku napisanym w JavaScript.

Jak wygląda nasz schemat?

AngularJS – czyli program napisany w JavaScript przez programistów Google, działa na naszym lokalnym komputerze i monitoruje zmiany. Każde wprowadzenie kolejnego znaku z klawiatury do formularza wywołuje reakcje -Angular wysyła pytanie do serwera z nowymi wartościami, serwer odpowiada, -zapewne na podstawie zawartości bazy danych, odpowiedź wraca do Angular i jest odpowiednio dysponowana -gdy wymaga tego – modyfikuje zawartość HTML strony i przeglądarka na komputerze wyświetla nam stronę inaczej. W opisywanym przykładzie początkowo informuje nas o ilości pasujących nazw, następnie – gdy jest ich już dość mało – wyświetla je. Na końcu wybieramy jedną i ukazuje się np. mapka.

W projekcie którym się bawimy, chcemy uzyskać współrzędne geograficzne miejscowości o wprowadzanej nazwie.

To co trzeba w takim wypadku zrobić to:

1. utworzyć formularze – widoki w HTML,

2. oprogramować to po stronie Angular/JavaScript – aby Angular wiedział, czego oczekujemy,

3. oprogramować serwer, aby na zadawane przez Angular pytania odpowiadał -również w sposób jaki chcemy.

Serwer może być napisany w czymkolwiek, nawet prosty skrypt PHP na lokalnym komputerze może dostarczyć sporo frajdy.