UWAGA: Od kwietnia 2018 roku Forgen.pl zawiesił swoją działalność. Na poniższej stronie znajduje się archiwum serwisu. Możliwość logowania i rejestracji nowych kont została zablokowana. W celu uzyskania porad genealogicznych zapraszamy na inne fora o tej tematyce: genealodzy.pl, Wielkopolskie Towarzystwo Genealogiczne Gniazdo

Openlayers i GeoJSON w prezentacji zdjęć zbiorowych - pytanie do informatyków

Problemy związane z tworzeniem stron rodzinnych

Moderator: Moderatorzy



AUTOR TEMATU
hniew
Posty: 26
Rejestracja: ndz cze 23, 2013 10:45 pm
Podziękował/a: 7 razy
Podziękowano: 9 razy

Openlayers i GeoJSON w prezentacji zdjęć zbiorowych - pytanie do informatyków

Post autor: hniew » wt lut 11, 2014 8:36 pm

Witam,
Od kiedy zabrałem się za klecenie strony chodzi mi po głowie temat prezentacji i opisu zdjęć zbiorowych.
Dziś wydaje mi się, że jestem blisko satysfakcjonującego rozwiązania.
Robiąc mapki zorientowałem się, że narzędzia do ich tworzenia i wyświetlania mogą się nadać także do umieszczania w sieci dużych zdjęć.
Pewnie nie nowy pomysł, ale dla mnie małe objawienie ;)
Na dziś doszedłem do takiego etapu:
http://lik.info.pl/OLzbiorowe2013.php
tzn:
- za pomocą MapTilera pokafelkowałem zdjęcie
- za pomocą QGISa zrobiłem obrysy osób i zapisałem w pliku geojson (dla testów tylko dla części górnych szeregów)
- za pomocą biblioteki Openlayers umieściłem obie warstwy na prowizorycznej stronie
- dzięki OpenLayers.Control.SelectFeature po kliknięciu w wybraną osobę jest ona zaznaczana/podświetlana (zmienia się styl wypełnienia poligonu).

I na tym etapie utknąłem - tuż przed końcem etapu minimum.
Dla zakończenia niezbędna jest jeszcze możliwość wyświetlania danych wskazanej osoby.
Nazwiska i imiona zawiera w „properties” plik geojson.

Można wykorzystać dymki/popupy ale to rozwiązanie jakoś mi nie leży.

Jak uzyskać efekt podobny do takiego:
http://ol3js.org/en/master/examples/ima ... layer.html
tzn wyświetlania danych wskazanego pola pod/obok/poza mapą???
W powyższym przykładzie działa w oparciu o hover a u mnie ma działać na kliknięcie.
Powyższe działa w oparciu o dopiero rozwijany OL3, ja robię na aktualnie stabilnym OL.

Fragment geojsona wygląda tak:
...
"features": [
{ "type": "Feature", "properties": { "osoba": "Kowalski Jan" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 984.65271226725224, -439.66828667034429 ], [ 980.06645293824295, -409.88500684763187 ], ... ] ] } },
{ "type": "Feature", "properties": { "osoba": "Nowak Adam" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 977.32118401394018, -454.03808204683594 ], ...

Pozdrawiam
Hubert

PS. Przy okazji jeszcze jedna sprawa.
Czy w Notepad++ można jakoś hurtem zamienić w geojsonie takim jak wyżej wszystkie wyrażenia takie jak
[ 984.65271226725224, -439.66828667034429 ],
na takie
[ 984.0, -439.0 ],
tzn zwyczajnie zamienić dziesiętne na „zero” bez stosowania się do reguł zaokrąglania?
Pozdrawiam
Hubert

Awatar użytkownika

wicy
Posty: 1348
Rejestracja: czw kwie 10, 2008 8:56 pm
Lokalizacja: Łódź
Podziękował/a: 145 razy
Podziękowano: 322 razy
Kontakt:

Re: Openlayers i GeoJSON w prezentacji zdjęć zbiorowych - pytanie do informatyków

Post autor: wicy » wt lut 11, 2014 10:55 pm

W ogóle nie wiem o co w tym chodzi i pierwszy raz toto na oczy widzę, ale na przykładowej stronie masz przykładowy kod i funkcję odpowiedzialną za formowanie wyświetlanego tekstu.

Kod: Zaznacz cały

var displayFeatureInfo = function(pixel) {

  var feature = map.forEachFeatureAtPixel(pixel, function(feature, layer) {
    return feature;
  });

  var info = document.getElementById('info');
  if (feature) {
    info.innerHTML = feature.getId() + ': ' + feature.get('name');
  } else {
    info.innerHTML = ' ';
  }

  if (feature !== highlight) {
    if (highlight) {
      featureOverlay.removeFeature(highlight);
    }
    if (feature) {
      featureOverlay.addFeature(feature);
    }
    highlight = feature;
  }

};
wywoływaną

Kod: Zaznacz cały

$(map.getViewport()).on('mousemove', function(evt) {
  var pixel = map.getEventPixel(evt.originalEvent);
  displayFeatureInfo(pixel);
});
Na głównej formatce w kodzie masz diva z odpowiednim id (info) zwracającego tekst

Kod: Zaznacz cały

<div id="info" class="alert alert-success"></div>
Przyjrzyj się temu tropowi.
---------------------------------------
Pozdrawiam, Witek Mazuchowski


AUTOR TEMATU
hniew
Posty: 26
Rejestracja: ndz cze 23, 2013 10:45 pm
Podziękował/a: 7 razy
Podziękowano: 9 razy

Re: Openlayers i GeoJSON w prezentacji zdjęć zbiorowych - pytanie do informatyków

Post autor: hniew » śr lut 12, 2014 1:57 pm

Dzięki, trop ewidentnie słuszny ino zemnie d...a nie tropiciel.
Ze skryptów korzystam metodą Ctrl+C, Ctrl+V

Pozostaje mi się, więc przeprosić z popupami.
Szczęśliwie te w OL daje się dość mocno modyfikować.

Hubert

PS. Gdyby ktoś obeznany z OL2 tu wpadł to dodam jeszcze pytanie o wariant maximum.
Czy można z takiej „mapki”:
http://lik.info.pl/OLzbiorowe2013.php
z geojsona wyciągnąć i umieścić obok okna alfabetyczną listę nazwisk, na dodatek tak sformatowaną aby kliknięcie nazwiska wywoływało ten sam efekt co kliknięcie osoby na zdjęciu?
Czyli coś w stylu tego rozwiązania:
http://lik.info.pl/geografia.php
tyle że dotyczące nie markerów a poligonów warstwy wektorowej.

PS 2. Sprawa z PS z pierwszego postu już nieaktualna.
Pozdrawiam
Hubert


AUTOR TEMATU
hniew
Posty: 26
Rejestracja: ndz cze 23, 2013 10:45 pm
Podziękował/a: 7 razy
Podziękowano: 9 razy

Re: Openlayers i GeoJSON w prezentacji zdjęć zbiorowych - pytanie do informatyków

Post autor: hniew » czw lut 13, 2014 3:52 pm

Dzięki pomocy udzielonej na Genealogach.pl rozwiązane zostało zadanie główne.
Sprawę załatwiło takie maleństwo

Kod: Zaznacz cały

onSelect: function(feature) {
var info = document.getElementById('info');
info.innerHTML = feature.attributes.dane;
}, 
onUnselect: function(feature) {info.innerHTML = "";},
Pozostaje więc do rozwiązania zaanonsowany w poprzednim poście wariant maximum :)

Hubert
Pozdrawiam
Hubert

ODPOWIEDZ

Wróć do „Tworzenie stron”