[OPEN LAYERS] Wczytywanie danych z MySQL - Wersja do druku +- Forum QGIS (http://forum.quantum-gis.pl) +-- Dział: Web GIS (http://forum.quantum-gis.pl/forum-3.html) +--- Dział: OpenLayers (http://forum.quantum-gis.pl/forum-12.html) +--- Wątek: [OPEN LAYERS] Wczytywanie danych z MySQL (/thread-656.html)
1
2
|
[OPEN LAYERS] Wczytywanie danych z MySQL - BIMSON - 06-02-2012 Witam. Stworzyłem sobie bazę MySQL w której posiadam dane o zdjęciu tj. lon, lat, direction, ścieżka dostępu, opis itp. Wraz z formularzem do łatwiejszego wprowadzania Chce osiągnąć : 1. Na mapie markery z lon lat z bazy, 2. Po kliknięciu na marker otwiera się ścieżka do pliku też z bazy. Poprosze o przykładowe kody lub jakąś wskazówkę. Dowiedziałem się że trzeba mieć aplikacje na serwerze która wyśle dane z bazy do klienta, ale na tym moja wiedza sie kończy RE: [OPEN LAYERS] Wczytywanie danych z MySQL - Odoakr - 07-02-2012 1) Wystarczy skrypt PHP, który odczyta dane z bazy i wyśle je do aplikacji w formacie JSON (jub xml). Walczyłem z tym tutaj: http://forum.quantum-gis.pl/thread-645.html 2) Odpowiednio przygotowany plik php podpinasz do mapy. Kod PHP: vectorlayer = new OpenLayers.Layer.Vector("nazwa warstwy", { 3) Klikanie załatwiasz przez OpenLayers.Control.SelectFeature http://dev.openlayers.org/docs/files/OpenLayers/Control/SelectFeature-js.html np: Kod PHP: var wybierz = new OpenLayers.Control.SelectFeature(vectorlayer,{ RE: [OPEN LAYERS] Wczytywanie danych z MySQL - BIMSON - 07-02-2012 Dzięki za odpowiedź ale nie rozumiem kodu geojson.php Jak go dostosować do mojej bazy? (Mysql) RE: [OPEN LAYERS] Wczytywanie danych z MySQL - Odoakr - 07-02-2012 W pliku php łączysz się z bazą: //połaczenie z serweram mysql Kod PHP: $polaczenie = @mysql_connect('localhost', 'uzytkownik', 'haslo') Przykład połaczenia z: http://webmade.org/porady/nawiazanie-polaczenia.php 1) Tworzysz zapytanie do bazy danych i je wykonujesz. Kod PHP: $query = "SELECT gid, fid, ST_X(ST_centroid(geom)) as X, ST_Y(ST_centroid(geom)) as Y FROM XXX"; Dla My sql: Kod PHP: $result = mysql_query('SELECT gid, fid, ST_X(ST_centroid(geom)) as X, ST_Y(ST_centroid(geom)) as Y FROM XXX'); Jeśli masz X i Y w kolumnie to masz połowę kłopotu za sobą (w moim wypadku, za pomocą funkcji postgis generuje X i Y z geometrii poligonów. W najprostszym wypadku: Kod PHP: "SELECT id, fid, X, Y FROM nazwa_tabeli" 2) konstruujesz obiekt geojson. W zasadzie możesz użyć ten kod. Tu też musisz wymienić funkcje PHP na te odpowiedzialne za obsługę MySQL. pg_fetch_array to mysql_fetch_array, a pg_close to mysql_close Kod PHP: // Return route as GeoJSON 3. RE: [OPEN LAYERS] Wczytywanie danych z MySQL - BIMSON - 07-02-2012 Moj kod wygląda tak : Kod: <?php I ostatnie echo wywala mi : Kod: {"type":"FeatureCollection","features":[]} Ja mam kolumny w bazie tak że w osobnej kolumnie jest lon i osobno lat RE: [OPEN LAYERS] Wczytywanie danych z MySQL - Odoakr - 07-02-2012 Nie łączysz się z bazą. masz: mysql_select_db("gis"); powinno być: $ db = mysql_select_db("gis", $con); RE: [OPEN LAYERS] Wczytywanie danych z MySQL - BIMSON - 07-02-2012 (07-02-2012, 14:51)Odoakr napisał(a): Nie łączysz się z bazą. Zmieniłem i bez zmian. Ok Doszedłem do tego żeby tworzyło. Teraz w wyniku otwymuje: Kod: {"type":"FeatureCollection","features":[{"type":"Feature","nr_zlecenia":"nr_zlecenia_domyslny","GPSImgDirection":"45","opis":"opis_domyslny","path":"foto/2012-02-06_P1000023.JPG","geometry":{"type":"Point","coordinates":"[50.928019444444,21.369808333333]"}},{"type":"Feature","nr_zlecenia":"nr_zlecenia_domyslny","GPSImgDirection":"315","opis":"opis_domyslny","path":"foto/2012-02-06_P1000022.JPG","geometry":{"type":"Point","coordinates":"[50.928019444444,21.369808333333]"}}]} Jak dodaje za pomocą kodu : Kod: function init() { RE: [OPEN LAYERS] Wczytywanie danych z MySQL - Odoakr - 08-02-2012 Masz włączona obsługę błędów w PHP? Nic nie wywala? Zrób var_dump($result) - jak będzie pusta to wtedy ostatecznie się okaże, że to coś nie tak z połączeniem z bazą... RE: [OPEN LAYERS] Wczytywanie danych z MySQL - BIMSON - 08-02-2012 (08-02-2012, 09:33)Odoakr napisał(a): Masz włączona obsługę błędów w PHP? Nic nie wywala?Łaczy sie i wyciąga już dane z bazy. Edytowałem wcześniejszy mój post. Zobacz RE: [OPEN LAYERS] Wczytywanie danych z MySQL - Odoakr - 08-02-2012 Usuń minScale i maxScale. Zaciemnienie jest właśnie powodowane przez to, że skala mapy nie mieści się w przedziale miedzy minScale i maxScale. Jak ustawisz odpowiedni zoom to w LayerSwitcher warstwa się "rozjaśni". Ta patrzę jeszcze na tego geojsona i tam jest chyba byk w ścieżce do fotki. |