Einsteigerfrage: Immobilienkompass

Leg die Karte in einen iframe:

<iframe id="ff" width="600" height="460" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" 
           src="xxx.htm?zoom=4&lat=53.3&lon=6.38" 
	     name="Bildframe" ></iframe> 

…dachte, das geht in WordPress nicht. Hmm. Du hast jedenfalls Recht. Nochmal danke, fx99.

An WordPress habe ich gar nicth gedacht. Ist halt, wie ich meine Karten einbinde.

Hallo zusammen,

habe Kartenausschnitt den ich anzeigen möchte jetzt in WordPress integriert und alle Control-Panels, die ich nicht möchte, entfernt. Soweit so schön (http://immobilie-bruchsal.de/).

Habt Ihr noch einen Tipp für mich, wie ich am einfachsten die Koordinaten “meines Viertels” rausbekomme, also analog diesem Beispiel: http://php-baustelle.de/openlayers/step-by-step/:


'{"type":"Polygon","coordinates":[[[946997.668901750002988,6804851.635990919545293],[947398.27435326797422,6805510.242152039892972],[947937.327855485025793,6806519.116099460050464],[947876.502885716035962,6806705.792200200259686],[948839.171578197972849,6807214.812279700301588],[948866.945791151025333,6806943.305583120323718],[948825.81323930202052,6806740.500387510284781],[948825.679655913030729,6806649.948161319829524],[948920.913480286952108,6806218.210386379621923],[949167.475020444951952,6805973.516733709722757],[949428.474698559031822,6805492.619279350154102],[949490.268147898023017,6805254.51523463986814],[949368.818583442945965,6804879.135642670094967],[949300.679923127987422,6804730.331076799891889],[949117.704076112015173,6804232.10446386039257],[948833.071270102052949,6803457.073904880322516],[948178.668511525029317,6803987.724127359688282],[947673.177835781942122,6804222.643158700317144],[946997.668901750002988,6804851.635990919545293]]]}';

Vielleicht gibts ja irgendein Hilfsmittel, bei dem ich die Eckpunkte setzen kann und dann kommen alle Koordinaten der darin liegenden Fläche raus? Wär ja denkbar… :slight_smile:

Danke euch.

Daniel

Falls es keine schöneren Malprogramme gibt, würde ich einfach das “Vector Formats Example” von OpenLayers nehmen und auf OSM, Mercatorprojektion und Bruchsal umschreiben. Da kannst Du oben ein Polygon auswählen, in der Karte die Ecken setzen und siehst rechts die Daten als GeoJSON. Zumindest das Koordinatenabtippen kannst Du Dir damit sparen. Ist halt nicht gerade der bequemste Editor, man kann z.B. nicht gleichzeitig malen und Karte verschieben.

Grüße, Max

Eine der einfachsten Methoden die mir einfallen wäre, im Easymap-Generator (http://osmtools.de/easymap/?lang=de&page=editor) das gewünschte Polygon zu zeichnen, das zugehörige HTML herunterzuladen und daraus die Koordinaten zu kopieren.

@maxbe: danke max. K.A., obs an meinem Browser und dessen Einstellung liegt, doch mir wird rechts (Code?) gar nichts angezeigt… macht aber nix, denn…

@goldfish: danke, das funktioniert bei mir.

Wenn ich mir den html-Code runterlade, ist darin folgender Abschnitt:

geometries = new Array();geometries.push(drawLine([[8.5991063118143,49.126508299715],[8.5997500419779,49.125469202404],[8.6045565605324,49.12583429313],[8.6064448356787,49.124430083317],[8.6082901954809,49.122744979054],[8.6135258674778,49.121453027006],[8.6141695976414,49.122211350767],[8.6133971214451,49.123053919123],[8.6150279045261,49.124177321328],[8.6146416664279,49.127098047962],[8.6116375923314,49.127519292415],[8.6116375923314,49.127912450676],[8.6138262748874,49.128502182223],[8.6134400367893,49.129007660822],[8.6114230156102,49.128783004303],[8.6112513542332,49.130804876329],[8.6066164970557,49.130804876329],[8.6088480949563,49.133669053887],[8.6098351478738,49.133556736316],[8.6098351478738,49.134371032941],[8.6084618568582,49.13465182178],[8.6058011055156,49.131282250745],[8.6044707298442,49.13004668398],[8.603526592271,49.129176152541],[8.6036124229595,49.128614511244],[8.6013808250592,49.128951496786],[8.5997929573224,49.126761049821],[8.5991063118146,49.126480216289]],{strokeColor:"#0000FF",strokeWidth: 3,fillColor: "#0000FF",fillOpacity: 0.4}));

Ich vermute mal, die Zahlen zwischen den eckigen Klammern, also:

8.5991063118143,49.126508299715],[8.5997500419779,49.125469202404],[8.6045565605324,49.12583429313],[8.6064448356787,49.124430083317],[8.6082901954809,49.122744979054],[8.6135258674778,49.121453027006],[8.6141695976414,49.122211350767],[8.6133971214451,49.123053919123],[8.6150279045261,49.124177321328],[8.6146416664279,49.127098047962],[8.6116375923314,49.127519292415],[8.6116375923314,49.127912450676],[8.6138262748874,49.128502182223],[8.6134400367893,49.129007660822],[8.6114230156102,49.128783004303],[8.6112513542332,49.130804876329],[8.6066164970557,49.130804876329],[8.6088480949563,49.133669053887],[8.6098351478738,49.133556736316],[8.6098351478738,49.134371032941],[8.6084618568582,49.13465182178],[8.6058011055156,49.131282250745],[8.6044707298442,49.13004668398],[8.603526592271,49.129176152541],[8.6036124229595,49.128614511244],[8.6013808250592,49.128951496786],[8.5997929573224,49.126761049821],[8.5991063118146,49.126480216289[/code]

sind die Koordinaten, die ich brauche. 

Gemäß Schritt 13 aus dem Beispiel ([url]http://php-baustelle.de/openlayers/step-by-step/[/url]) sind diese Koordinaten in der json-Datei ausgelagert, also speichere ich diese als geom.json ab und lade beides hoch. Leider ist dann aber nach wie vor  "mein" Viertel nicht markiert, sondern immer noch ein Tiel von Bielefeld aus dem Beispiel. 

Ich dachte, ich lade die Koordinaten hiermit in meine Karte:

url: “geom.json”,



??

Wenn ich doch über goldfishs "Koordinatenkonfigurator" diese json-Datei für ein Viertel meiner Stadt gespeichert habe, wieso erscheint dann immer noch die Markierung in Bielefeld. Ist doch völlig unlogisch...

Und noch was anderes: welcher Codeteil ist denn für diese Überblickkarte rechts unten im Eck zuständig? Habe diverse Versuche gestartet, aber nicht den richtigen Teil gefunden, um nur diesen Ausschnitt zu entfernen und nicht auch andere Funktionen zu deaktivieren.




BTW: ich bin bisher extrem positiv überrascht von der Unterstützung in diesem Forum. Das ist nicht in allen Foren unbedingt so. VIELEN DANK!

Ich glaube, es geht erst, wenn Du mit der Maus raus gehst und dann wieder in das Polygon. Das wird dann blau und rechts steht was.

das “Beilefeld”-Problem würde ich auf Deinen Browsercache schieben. Lade doch mal die Datei “…/geom.json” und mach nen Reload.

Du musst übrigens aufpassen mit den Projektionen: Alles was irgendwo bei (8,49) liegt ist Längengrad/Breitengrad, wenn sowas wie (946997,6804851) auftaucht ist das Mercator. Ist kein Problem, aber das muss dann zu dem passen, was Du in “projection:…” bei “OpenLayers.Layer.Vector” angibst.

hmmm… weder in FF, noch im Opera oder Safari klappt das bei mir. Ich kann das Polygon einfach nicht schließen. Und wenn ich neben die Karte (rechts) und dann wieder auf die Karte gehe, ist das Polygon noch immer veränderbar/nicht abgeschlossen. Und Code wird gar nicht angezeigt.

Gute Idee mit dem Cache, daran hatte ich nicht gedacht → Bielefeld wird nicht mehr geladen, aber leider auch kein markiertes Feld für Bruchsal (geom.json)… Sieht für mich so aus, als ob die easymap von osm-tools (http://osmtools.de/easymap/index.php?lang=de&page=editor) nicht den passenden Code für die geom.json generiert

ooookay - schau Dir bitte nochmal aus dem Beispiel (http://php-baustelle.de/openlayers/step-by-step/), den Code von Schritt 12 an. Da sind ja auch beide Einheiten verwendet: Längen-/Breitengrad-Koordinaten für die Karte sowie Mercator-Koordinaten für das markierte Feld. Insofern bin ich mir nicht sicher, auf welche Fehler(gefahr) Du mich aufmerksam machen willst :slight_smile:

Danke für Deine Ausdauer!

Ich benutze immer http://m.osmtools.de/index.php?lon=8.5811462402514&lat=49.128670675652&zoom=14&mlon=8.589772224443&mlat=49.126732966532&icon=4 um Koordinaten aus
einer Karte zu bestimmen.
Da kommen die Koordinaten aber in grad raus, die must Du dann noch in das andere Koordinatensystem transformieren.
Aber dazu gibt es sicher einer OL Routine.

Hallo,

vielleicht hilft das hier weiter für GeoJSON:

  1. http://blog.sallarp.com/geojson-google-maps-editor.html → GeoJSON Editor, damit kann man auch mehrere Polygone als 1 großen Multipolygon erzeugen (ist aber mit Google)
  2. http://openlayers.org/dev/examples/vector-formats.html → Ergebnis aus 1 unten reinpasten und Ergebnis in OpenLayers anzeigen (als Kontrolle). Mit dieser Seite kann man zwar GeoJSONs erzeugen, allerdings ist der Hintergrund nicht so berauschend. Da müsstest du wohl das Beispiel etwas anpassen und einen anderen Hintergrund (z.B. Mapnik) einbinden.

Andere Tools, die mir so einfallen (z.B. QGIS), sprengen wohl komplett den Rahmen.

Gruß,

Doppelklick beendet das zeichnen… aber egal, hier gibts auch bessere Vorschläge zum Malen, glaube ich :wink:

Du hast jetzt ein paar Tools gesammelt, die verschiedene Koortdinatensysteme verwenden. Easymap liefert Koordinaten, die so aussehen “6.8796,49.91405” und bindet den Vector-Layer ein mit

new OpenLayers.Layer.Vector("Zeichnungen",
        {displayInLayerSwitcher: false });

Da steht nichts dabei über die Projektion, dann gilt default und das ist hier (Lon,Lat).

Das step-by-step-Beispiel und die OpenLayers-Demo liefern Koordinaten “946997.66,6804851.63” und binden den Layer so ein

projMercator = new OpenLayers.Projection("EPSG:900913");
...
new OpenLayers.Layer.Vector("Gebiete", {
 strategies:...,
 protocol:  ...,
 projection: projMercator                         <--- Da steht eine Projektion
});

Du kannst beides nehmen (ich würde im Zweifel (Lon,Lat) wählen, aber wenn mein Malprogramm was anderes liefert, nehme ich auch das). Du musst nur aufpassen, dass Du den Layer mit der passenden Projektion zu den Daten definierst.

Stimmt. Aber immer wenn dort eine Koordinate in Grad vorkommt, wird die umgewandelt. Beim Setzen der Kartenmitte steht z.B.

map.setCenter(new OpenLayers.LonLat(lon, lat).transform(projLonLat,projMercator), zoom);

Die nehmen dort lon/lat und EPSG:4326 weil das üblicher ist. Weil aber die Karte in Mercator vorliegt (muss so sein wenn man OSM-Karten vom Tileserver holt) muss man solche Koordinaten jedes Mal mit “transform(…,…)” umwandeln. Bei Vector-Layern wird diese Umwandlung erledigt, indem man bei der Layerdefinition die Projektion angibt.

Falls man die Projektionen verwechselt und lonlat verwendet, wo Mercator gefragt wäre, sieht man seine POIs am Äquator bei (0,0) rumliegen.

Grüße, Max

Danke Max.

Also angenommen ich nehm die Koordinaten aus easymap (“8.5991063118143”,“49.126508299715”), dann fehlt mir, wenn ich Dich richtig verstanden habe, die Angabe zur Transformation (/Projektion?).

Mir wäre es das Liebste, ich könnte den Code des Schritt-für-Schritt-Beispiels nehmen und die Koordinaten aus easymap nehmen. Aber dann fehlt mir offensichtlich noch die Projektion/Transformation. Wie müsste das lauten / was müsste ich schreiben? Das meinst Du vermutlich auch mit Deinem Satz “Du musst nur aufpassen, dass Du den Layer mit der passenden Projektion zu den Daten definierst.

Die geom.json aus dem Schritt-für-Schritt-Beispiel (http://php-baustelle.de/openlayers/step-by-step/) lautet ja so:

{"type":"Polygon","coordinates":[[[946997.668901750002988,6804851.635990919545293],[947398.27435326797422,6805510.242152039892972],[947937.327855485025793,6806519.116099460050464],[947876.502885716035962,6806705.792200200259686],[948839.171578197972849,6807214.812279700301588],[948866.945791151025333,6806943.305583120323718],[948825.81323930202052,6806740.500387510284781],[948825.679655913030729,6806649.948161319829524],[948920.913480286952108,6806218.210386379621923],[949167.475020444951952,6805973.516733709722757],[949428.474698559031822,6805492.619279350154102],[949490.268147898023017,6805254.51523463986814],[949368.818583442945965,6804879.135642670094967],[949300.679923127987422,6804730.331076799891889],[949117.704076112015173,6804232.10446386039257],[948833.071270102052949,6803457.073904880322516],[948178.668511525029317,6803987.724127359688282],[947673.177835781942122,6804222.643158700317144],[946997.668901750002988,6804851.635990919545293]]]}

Die aus easymap.json hat am Anfang noch einen Haufen anderer Definitionen - kann ich nicht einfach die Koordinaten aus der easymap.json in die geom.json kopieren und dann den Layer mit der korrekten Projektion definieren? Bleibt meine Frage wie die Definition in diesem Fall lautet…


→ ja, das scheint bei dieser Testkarte der Fall zu sein: http://immobilie-bruchsal.de/mapbr2.html

Grüße aus dem nassen Bruchsal :frowning:

Hi Daniel,

sowas würde ich in QuantumGIS ( http://qgis.org/de ) machen. QGIS ist ein Opensource-Geoinformationssystem. Läuft auch auf dem Mac (vorher musst du ein paar Frameworks installieren, ist aber nicht wirklich kompliziert). Wenn das Programm installiert ist, musst du zusätzlich die Erweiterung “Openlayers-Plugin” installieren (geht direkt aus dem Programm heraus). Damit kannst du eine OSM-Karte öffnen. Dann erstellst du eine neue Ebene, zeichnest dein Polygon, so wie du es haben willst und speicherst die Ebene als GeoJson ab. Diese Ebene bindest du dann per “var layer” Codezeile in Leaflet ein. Keine Hexerei.

@Mapsmarker-Plugin: Anfang 2013 soll eine kostenpflichtige “Pro”-Version rauskommen, mit der sich auch GeoJson-Layer einbinden lassen. Damit ist es dann ein Kinderspiel, so eine Karte direkt in Wordpress zu erstellen. Ohne eine Zeile Code schreiben zu müssen. Ich warte schon sehnsüchtig auf diese Version …

Viel Spaß, Rallinger

Ich hab mir mal Dein Beispiel kopiert: http://geo.dianacht.de/tests/mapbr.html?zoom=4&lat=53.3&lon=6.38
Die Daten hab ich mit dem OL-example erstellt, die liegen in Mercator vor. Deshalb ist der Layer auch mit einem extra-Eintrag für die Projektion definiert.

Zusätzliche Header brauchst Du nur einfügen, falls Du mehrere Stadtviertel hättest: http://geo.dianacht.de/tests/mapbr2.html?zoom=4&lat=53.3&lon=6.38 (daten dazu: http://geo.dianacht.de/tests/geom.json2 )
Da habe ich noch eine { “type”: “FeatureCollection”,…} um zwei Zeilen rumgebaut, weil ich sonst nicht mehrere Objekte in einer Datei unterbringe (und eine Farbe in die Properties eingetragen, und eine OpenLayers.StyleMap definiert, die diese Einträge abfragt, weil ich vermute, dass Du nicht nur ein Stadtviertel willst)

Grüße, Max (der vermutlich erstmal weg für heute)

@ Rallinger: sowohl die Idee mit QuantumGIS als auch die Option mit dem MapsMarker-Plugin (2013) klingen sehr gut. Ich werde den bisher eingeschlagenen Weg jetzt aber erstmal fortsetzen, glaube nämlich, dass ich es jetzt so einigermaßen begriffen habe, um damit zum Ziel zu kommen. Sobald das der Fall ist, poste ich hier auch nochmal schrittweise die Lösung. Danke jedenfalls!

@Max: soviel Hilfe ist mir ja fast schon unangenehm, aber ich möchte mich natürlich nicht beklagen :wink: Wenn ich jetzt noch wüsste, was Du mit dem “OL-example” gemeint hast…? Ich vermute mal, Dein Malprogramm (http://geo.dianacht.de/tests/vector-formats.html)? Frag mich nicht wieso, aber heute läufts auf Safari :slight_smile: Juhu!

Jetzt hab ichs, glaube ich, wirklich verstanden. Dann werde ich die nächsten Tage mal die angedachte Karte realisieren. Ich freu mich so :slight_smile: Und wenns geklappt hat, poste ich wie erwähnt nochmal eine schrittweise ANleitung - sucht ja vielleicht mal jemand anderes danach…

Danke an alle!!!

Daniel

Mist, eins hab ich noch vergessen… welchen Codeteil lösche ich, wenn ich rechts unten im Eck diese Übersichtskarte nicht brauche?

Ich dachte, wenn ich beim Laden dieser Control-Panels “overviewMap” lösche, reicht das. Das führt aber leider dazu, dass auch meine markierten Bereiche verloren gehen…

Wenn Du das “overviewMap” löscht (und das komma hinter scale in der Zeile drüber), musst Du auch das “overviewMap.maximizeControl();” 12 Zeilen drunter löschen. Sonst läufst Du da in einen Fehler und JS stürzt zwischen Kartemalen und Bereichmalen ab.

Grüße, Max

ah, okay - ich hatte es noch mit Löschen von “overviewMap = new OpenLayers.Control.OverviewMap();” ca. 8 Zeilen darüber versucht :slight_smile: Okay, jetzt passts.

Bonusfrage (ursprüngliches Problem ist gelöst):

hat jemand eine Idee, wie ein Betrachter der so erstellten Karte markierte Viertel ab bzw. auswählt? Betrachter möchte nur Viertel A und B auf der Karte markiert haben, Viertel C jedoch nicht. Muster (siehe direkt unter der Karte): http://karte.immobilien-kompass.de/wohnen/karlsruhe

Wie ich html-seitig Auswahlboxen etc. erzeuge, das ist nicht das Problem. Aber quasi die Kommunikation zwischen der Betrachterauswahl und “meiner” Karte…

EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT - EDIT -

maxbe war erneut super hilfsbereit und hat mir die Lösung der Bonusfrage als PM geschickt und ist somit auch gelöst.

Komplette Lösung folgt hier die nächsten Tage…

Danke nochmal…