x

3 Frage OpenLayers - Extend und geojson einbinden


Geschrieben von Lübeck (Gast) am 03. Mai 2012 12:07:37: [flux]

Moin!

vor ca. 14 Tagen hatte ich hier schon einmal ein Posting bezügl. geojson und OpenLayers.

Nun hatte ich etwas Zeit und versucht die Karte zu erweitern - aber wie Ihr jetzt schon richtig vermutet sind Komplikationen aufgetreten. Nun hoffe ich das mir der eine oder andere weiterhelfen kann.


Zoom-Fenster---

Es geht im Beispiel [1] um die Fragestellung des Zoom auf ein bestimmtes Fenster wie auch die Eingrenzung der Karte auf einen bestimmten Bereich. Für letzteres habe ich mich an das Beispiel von Flohoff orientiert und die Transformation mittels transform von OL angesetzt.

var map_area = new OpenLayers.Bounds();
map_area.extend(new OpenLayers.LonLat(10.68221,53.83476).transform(geographic, mercator));
map_area.extend(new OpenLayers.LonLat(10.70874,53.84561).transform(geographic, mercator));
map_area.toBBOX();

// Einrichten der Karte
map = new OpenLayers.Map('map', {
projection: geographic,
displayProjection: mercator,
controls: [
new OpenLayers.Control.MouseDefaults(),
new OpenLayers.Control.Attribution()],
maxExtent: map_area,
numZoomLevels: 18,
maxResolution: 156543,
units: 'meters'
});

Die verschiedenen Projektionen habe ich mit geographic bzw. mercator betitelt. Diese Art und Weise der Beschriftung habe ich in einem Web-Tutorial gefunden und fand ich persönlich sehr nachvollziehbar.

Leider funktioniert dieser Teil bei mir local überhaupt nicht (derzeit kann ich auch nur primär lokal testen).

Dann das mit dem Zoom-Befehl auf einen bestimmten Bereich. Dieses finde ich besser als über die Koordinate und den Zoomlevel da so gewährleistet wird das ein Bereich auch wirklich vollständig angezeigt wird.

Dieses habe ich mit folgendem Code (Funktion: go2obj) realisiert:

map.zoomToExtent(new
OpenLayers.Bounds(min_lon, min_lat, max_lon, max_lat).transform(geographic, mercator)
);

Hier wird immer auf einen Bereich um 0 gezoomt - ich habe die Koordianten getauscht, transformation auch einmal weggelassen und .... alle anderen Varianten ausprobiert. Leider alles OHNE Erfolg!!!!

Weiß einer warum?


hinzuladen von externen GeoJSON-Daten ---

Komme ich zur letzten Frage. In [2] hatte ich erfolgreich um Hilfestellung bei der Einbindung von GeoJSON-Daten gefragt und Hilfe bekommen. Nun wollte ich die Daten aus einer externen Datei einbinden um diese einfacher austauschen zu können. In dem Tutorial von Peter Robbins [3] hatte ich ein Beispiel gefunden um über .Protocol.HTTP eine exterene Datei einzubinden. Das sieht bei mir so aus:

var vector_layer = new OpenLayers.Layer.Vector("Strassen und Wege", {
style: {
strokeColor: "blue",
strokeWidth: 3,
cursor: "pointer"
},
protocol: new OpenLayers.Protocol.HTTP({
url: "schrebergarten.json",
format: new OpenLayers.Format.GeoJSON({
ignoreExtraDims: true,
'externalProjection': mercator,
'internalProjection': geographic
})
})
});

map.addLayer(vector_layer);

Aber leider wird jetzt wieder einmal gar nichts angezeigt.


zu guter Letzt ----

... noch eine Frage. Man kann GeoJSON-Daten filter, daran will ich mich versuchen, wenn o.g. Probleme gelöst sind. Kann man irgendwie die BBox der gefilterten GeoJSON-Daten ermitteln um darauf zu zoomen?

Über eine Hilfe würde ich mich sehr freuen.

Gruß Jan :-)

[1] http://osm.tappenbeck.net/sandbox/schre … extent.htm

[2] http://forum.openstreetmap.org/viewtopic.php?id=16335

[3] http://www.peterrobins.co.uk/it/ollatency.html

[4] http://osm.tappenbeck.net/sandbox/schre … x_json.htm


Antworten: