Neuling hat frage... Direktaufruf einer Adresse mittels URL

Direkt auf http://www.openstreetmap.de geht das nicht.

Bevor dir möglicherweise jemand eine Lösung anbietet:
Hast du dafür einen konkreten Verwendungszweck?

Gruß,
Mondschein

Ja und zwar im Bereich der Feuerwehr.

Wir bekommen die (Einsatz)Adresse elektronisch angeliefert. Jetzt haben wir einen 19Zoll TFT Monitor auf dem die Adresse auf der Karte angezeigt werden soll. Auf dem 19 Zoll Monitor befinden sich jedoch noch andere einsatzspezifische Inhalte, so dass die OpenstreetMapKarte selbst nur einen gewissen Bereich auf dem Monitor zur Verfügung hat. Und deshalb sind Kartenmenüs und oder Eingabefelder störend.

Das ganze hab ich bissher mit GoogleMaps umgesetzt, wollte aber auf OSM umsteigen…

und wie? eventuell mit ner kleine web-seite und einem eingebetteten Link? ginge mit osm auch.
siehe https://toolserver.org/~geohack/geohack.php?pagename=Alexander%E2%80%99s_Rest&language=de&params=50.156305555556_N_8.07875_E_dim:2_region:DE-HE_type:landmark

gib uns mal nen tip, noch besser nen screenshot. (ein bild sagt …)
kannst ja kritische Sachen übermalen.

Gruss
walter

Hallo StJahn, herzlich willkommen bei unserem Projekt :slight_smile:

Ui Feuerwehr und BOS klingt interessant. Da gibt es bei uns einige die sich mit sowas beschäftigen, siehe z.B. www.openfiremap.org Wir Rostocker waren im Frühjahr mal hier bei unserer Feuerwehr, die nutzen auch OSM als Ergänzung.

Was du machen könntest, ist eine Anfrage an Nominatim (Namensdienst/Geocoder) zu stellen und den dir geeignetsten Eintrag dann per JavaScript heraussuchst und anfährst. Nix anderes macht die Suche auf http://openstreetmap.de/karte.html

Aber die Adressen müssen natürlich da sein und die Gebietflächen (Stadt/Stadteil) sollten natürlich auch stimmen :wink:

Mit OpenLayers oder Leaflet geht ziemlich viel.

Nur ein kleines “randloses” Beispiel mit Leaflet:
http://leaflet.cloudmade.com/examples/mobile-example.html

Hast du denn schon die Koordinaten vorliegen, mit welcher du die Karte aufrufen kannst oder nur die Adresse wie z.B. Straße und Hausnummer?
Wie erfolgt bisher die Umwandlung der Adresse in Koordinaten für die Karte?

Gruß,
Mondschein

ich sehe das Problem erstmal darin, zu klären wie die bisherige SW-Situation ist:
Einfach mehrere Browser-Fenster und eines ist halt google map? oder schon irgendwas selbstgestricktes?

Danach können wir weitersehen.
Gruss
walter

Also das ganze war/ist aufgebaut mittels VisualBasic…

In der VB-Form ist ein WebBrowser-Steuerelement. sprich ein BrowserFenster eingebettet und dieses kann ich koplett mit VB ansprechen.

Und ja, im Moment rufe ich als ersten Step die XML per “http://nominatim.openstreetmap.org/search?q=XYZ+Germany&format=xml
auf und lese per VB den Inhalt aus. So kann ich feststellen, ob es Adresse bzw Hausnummer überhaupt gibt. Im zweiten Step, also wenn es die Adresse gibt, werden aus der XML die GeoKoordinaten ausgelesen und “bis jetzt” hiermit aufgerufen : http://www.openstreetmap.de/karte.html?zoom=15&lat=52.51574&lon=13.38696.

Wie gesagt, soweit funktioniert das auch… Nur hätte ich eine reine Karte ohne Menüs und oder Eingabefelder…

Dann erstelle dir z.B. eine HTML-Seite, welche OpenLayers oder Leaflet verwendet und deinen Wünschen entspricht.

Hier ein einfaches Beispiel mit OpenLayers, ohne Rand und mit Kacheln von openstreetmap.de:


<html>
  <head>
    <title>Test</title>
    
    <style type="text/css">
       html, body, #mapdiv {
          width: 100%;
          height: 100%;
          margin: 0;
       }
    </style>
    
    <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
    
    <script>
       function init() {
       
       var epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
       
       map = new OpenLayers.Map({
             div: "mapdiv",
             displayProjection: epsg4326
       });
       
//        var mapnik = new OpenLayers.Layer.OSM();
//        map.addLayer(mapnik);
       
       var osmde = new OpenLayers.Layer.OSM("osm.de",
                                          ["http://a.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png",
                                           "http://b.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png",
                                           "http://c.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png"])
       
       map.addLayer(osmde);
       
       map.addControls([
//                        new OpenLayers.Control.Navigation(),
//                        new OpenLayers.Control.PanZoomBar(),
//                        new OpenLayers.Control.LayerSwitcher(),
//                        new OpenLayers.Control.ScaleLine(),
                       new OpenLayers.Control.Permalink(),
                       new OpenLayers.Control.MousePosition(),
                       new OpenLayers.Control.Attribution()
                       ]);
       
       }
    </script>

  </head>
  <body onload="init();">
    <div id="mapdiv"></div>
  </body>
</html>

Aufrufen kannst du die Seite dann wie üblich in deinem Browser z.B. mit:
Pfad_zu_deiner_lokalen_HTML_Datei.html?zoom=15&lat=52.51574&lon=13.38696

Aber da kann sicher ein OpenLayers-Experte noch etwas mehr herausholen, kenne mich da nicht so aus. :slight_smile:
Evtl. noch einen Marker auf die Karte setzen…

Möglicherweise wäre es auch sinnvoll die OpenLayers-Dateien lokal zu speichern, damit die Karte auch noch funktioniert, falls openlayers.org nicht erreichbar ist oder sich die API ändert.

Gruß,
Mondschein

Oder du nutzt ganz einfach die “Informationfreewaydarstellung” das würde dann so aussehen

Georg

Bitte nicht mehr auf Informationfreeway.org verlinken. Die Seite ist quasi defekt, veraltet und FOSM-verseucht.

@Cobra, kannst du das ein bischen näher erklären? Was ist dort passiert? Scheinbar ist da etwas an mir vorbei gegangen. :confused:
Georg

  • tiles@home/osmarender ist immer noch in der Layerliste
  • tile-Markierung für osmarender-rerender ist immer noch vorhanden
  • diverse Layer, die eigentlich FOSM-Daten zeigen sollten
  • alle Layer außer osm-Mapnik-default sind defekt
  • defekte Layer zeigen ohne Hinweise/Fehlermeldung osm-Mapnik-default
  • hängt irgendwie mit FOSM zusammen (relevant für alle, die den Haufen nicht mögen)
  • falsche/fehlende Attributierung

Zufällig wurde OpenLayers wenige Stunden nachdem ich das Beispiel hier veröffentlicht habe auf Version 2.12 aktualisiert und damit funktioniert mein Beispiel nicht mehr.
Also bitte http://www.openlayers.org/api/OpenLayers.js in http://www.openlayers.org/api/2.11/OpenLayers.js abändern, dann funktioniert es wieder.
Wie gesagt, möglichst gleich eine lokale Kopie von OpenLayers verwenden, damit das nicht passiert:
http://www.openlayers.org/download/OpenLayers-2.11.tar.gz

Gruß,
Mondschein

Ok, die Sache mit den zum Teil nicht mehr funktionierenden “Layern” war mir schon aufgefallen. Ansonsten war mir bei der Darstellung noch nichts weiter aufgefallen. Wahrscheinlich will man den Infofreeway am langen Arm verhungern lassen. Schade eigentlich, aber es gibt ja genügend Alternativen…
Georg

Jetzt noch ein einfaches Beispiel mit Leaflet, ohne Rand, mit Kacheln von openstreetmap.de und Marker (falls beim Aufruf Koordinaten und Zoom angegeben wurden):

<html>
  <head>
    <title>Test</title>
        
        <style type="text/css">
                html, body, #mapdiv {
                        width: 100%;
                        height: 100%;
                        margin: 0;
                }
        </style>
        
        <link rel="stylesheet" href="http://leaflet.cloudmade.com/dist/leaflet.css" />
        <!--[if lte IE 8]><link rel="stylesheet" href="http://leaflet.cloudmade.com/dist/leaflet.ie.css" /><![endif]-->
  </head>
<body>
        <div id="mapdiv"></div>
        
        <script src="http://leaflet.cloudmade.com/dist/leaflet.js"></script>
        <script>
                
                var show_marker = new Boolean(false);
                
                var map = new L.Map('mapdiv');
                
                var osmdeUrl = 'http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png',
                                osmdeAttribution = 'Map data &copy; <a href="http://www.openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',
                                osmde = new L.TileLayer(osmdeUrl, {maxZoom: 18, attribution: osmdeAttribution});
                
                //map.setView(new L.LatLng(52.51574, 13.38696), 18).addLayer(osmde);
                
                var default_latlon = new L.LatLng(52.51436, 13.35005);
                var default_zoom = 18;
                
                if (window.location.hash) {
                        var loc = window.location.hash.split("/");
                        zoom = loc[0].replace("#", "");
                        if ( typeof loc[1] !== "undefined" && typeof loc[2] !== "undefined" ) {
                                latlon = new L.LatLng( loc[1], loc[2] );
                                show_marker = true;
                        }
                }
                
                if (typeof latlon === "undefined")   { latlon  = default_latlon };
                if (typeof zoom === "undefined") { zoom = default_zoom };
                
                map.setView(latlon, zoom).addLayer(osmde);
                
                if (show_marker == true) {
                        marker = new L.Marker(latlon);
                        map.addLayer(marker);
                }
                
//                 alert('lat=' + latlon.lat + ' lon=' + latlon.lng + ' zoom=' + zoom);
                
        </script>
</body>
</html>

Aufrufen kannst du die Seite in deinem Browser z.B. mit:
Pfad_zu_deiner_lokalen_HTML_Datei.html?#15/52.51574/13.38696

Möglicherweise wäre es auch hier sinnvoll die Leaflet-Dateien lokal zu speichern:
http://leaflet.cloudmade.com/download.html

Wie immer:
Lässt sich sicher noch verbessern.
Alle Angaben ohne Gewähr!
:slight_smile:

Gruß,
Mondschein

Also wenn es läuft, würden wir uns über ein Foto vom praktischen Einsatz freuen :slight_smile: Das könnten wir bestimmt auch in der Wochnnotiz bringen.

bzw. Streuung der OSM-Info unter Feuerwehr-Kollegen wäre auch toll :slight_smile:
“Spread the Word!” :smiley:

Da wäre allerdings zu überlegen, lokal mindestens einen Tileserver aufzusetzen oder einen Fallback auf eine andere Karte bzw. andere Kacheln einzubauen: Bei OpenStreetMap (.org, .de) gibt es keine Betriebsgarantie. Es ist zwar mittlerweile sehr selten geworden, kann aber trotzdem immer mal passieren, daß die OSM-Server vorübergehend nicht verfügbar sind.

Von daher würde ich vorschlagen, Kacheln für das benötigte Gebiet lokal zu rendern und vorzuhalten. Die Karte muß ja sicher nicht tagesaktuell sein, insofern reichen statische Kacheln, die man z.B. einmal im Monat (automatisiert) neu rendert.
Eine einfachere Alternative wäre, verschiedene Layer anzubieten. Wenn dann die bevorzugten Kacheln von openstreetmap.de einmal nicht zur Verfügung stehen, könnte man zu openstreetmap.org, Mapquest, Bing oder sogar G**gle umschalten (ggf. sogar automatisch).

Im Prinzip gilt gleiches für den Nominatim-Dienst. Aber notfalls geht es ja auch ohne automatische Adresssuche, Hauptsache man hat zumindest eine Karte.

Das sollen nur Anregungen sein. Ich verstehe, daß es im Moment primär um die Darstellung auf dem Monitor geht. Aber im nächsten Schritt würde ich darüber nachdenken, wie die Verfügbarkeit gesichert werden kann.

Hier eine Version, welche auch mit dem neuen OpenLayers 2.12 kompatibel ist.
Nur Maßstab, Attribuierung und die Karte werden angezeigt.
Höhe und Breite werden zu 100% genutzt, also maximale Kartengröße.
Zoomen und Verschieben der Karte kann per Maus (auch Mausrad) oder Tastatur erfolgen.
Verschiedene Dinge habe ich auskommentiert und lassen sich bei Bedarf einfach wieder aktivieren.


<html>
  <head>
    <title>Test</title>

    <link rel="stylesheet" href="http://www.openlayers.org/api/theme/default/style.css" type="text/css">
    <script src="http://www.openlayers.org/api/OpenLayers.js"></script>

    <style type="text/css">
	html, body {
		width: 100%;
		height: 100%;
		padding: 0;
		margin: 0;
	}

	div#mapdiv {
		width: 100%;
		height: 100%;
		padding: 0;
		margin: 0;
	}
       
/*	a[href] {
		color: #000000;
		background-color: transparent;
	}*/
       
	.olControlAttribution {
		bottom: 3px;
		right: 3px;
/*                 font-size: 10px; */
		font-size: x-small;
		color: #000000;
	}
            
	.olControlScaleLineBottom {
		display: none;
	}

    </style>
    
    <script>
	function init() {
       
		var proj4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
		var projmerc = new OpenLayers.Projection("EPSG:900913");
       
		map = new OpenLayers.Map("mapdiv", {
// 			div: "mapdiv",
			controls:[
			new OpenLayers.Control.Navigation(),
// 			new OpenLayers.Control.PanZoomBar(),
// 			new OpenLayers.Control.LayerSwitcher(),
			new OpenLayers.Control.ScaleLine({geodesic:true}),
// 			new OpenLayers.Control.PanZoom(),
			new OpenLayers.Control.ArgParser(),
// 			new OpenLayers.Control.OverviewMap(),
			new OpenLayers.Control.KeyboardDefaults(),
// 			new OpenLayers.Control.Permalink(),
// 			new OpenLayers.Control.MousePosition(),
			new OpenLayers.Control.Attribution()],
			numZoomLevels: 18,
			units: 'm',
			projection: projmerc,
			displayProjection: proj4326
			} );

		var osmde = new OpenLayers.Layer.OSM("OSM deutscher Stil",
			["http://a.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png",
			"http://b.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png",
			"http://c.tile.openstreetmap.de/tiles/osmde/${z}/${x}/${y}.png"],
			{
			isBaseLayer:true,
			tileOptions: { crossOriginKeyword:null },
			attribution: 'Map data &copy; <a href="http://www.openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA 2.0</a>',
			numZoomLevels: 19,
			opacity: 1.0
			} );

		map.addLayer(osmde);

// 		var mapnik = new OpenLayers.Layer.OSM();
// 		map.addLayer(mapnik);

		if (!map.getCenter()){
			map.setCenter(new OpenLayers.LonLat(10.0,51.0).transform(proj4326,projmerc), 5);
		}
	}
	</script>

  </head>
  <body onload="init();">
    <div id="mapdiv"></div>
  </body>
</html>

Aufruf im Browser z.B.:
Pfad_zur_lokalen_HTML_Datei.html?zoom=15&lat=52.51574&lon=13.38696
oder ohne Übergabe der Koordinaten, dann wird das (einstellbare) Standard-Kartenzentrum und der (einstellbare) Standard-Zoom verwendet:
Pfad_zur_lokalen_HTML_Datei.html

Gruß,
Mondschein

Sorry, ich bin da noch am Ball… Aber Danke schon mal für die Antworten.
Im moment grade nur wenig Zeit mich damit zu befassen. Evtl. gehts am Wochenende weiter…