Wie OSM in WPF anzeigen?

Auf einer Internetseite? http://leafletjs.com/examples/quick-start.html

Oder meinst du dein Frame in deiner C#-WinForms-Anwendung? Dann wirds komplexer. Du brauchst entweder eine Browserkomponente und zeigst darin per Leaflet die OSM-Karte an, oder … da bin ich leider überfragt, sorry.

Hallo,
habe was gefunden http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=87944

Jetzt erzsugt aber das Programm einen Cahefolder und erzeugt extra Ordner und Nummeriert die, das gefällt micht nicht, hat jmd eine Idee wie ich das umschreiben kann das es sie Temporär abspreichert, zudem habe ich auch gleich wieder die Weltkarte, reichen würde nur BaWü

Grüße

In dem Testprogramm kannst du beispielsweise in der MainWindow.xaml.cs im Konstruktor auf dem Kartenwidget latitude, longitude und zoom setzen.

Die Ordnerstruktur kommt von der Tile-Struktur, die OSM verwendet. Was dabei auffällt ist, das das Programm bei stärkerer Nutzung wohl gegen die Tile Usage Policy http://wiki.openstreetmap.org/wiki/Tile_usage_policy verstoßen könnte.

Nö, wie man das anders machen kann wüsste ich auf die Schnelle nicht. Aber *wieso *willst du das anders machen?

Bei mir stürzt es ab…

Das Programm lädt jetzt die Kacheln, das sind aber nicht die Vektordaten?

Das CodeProject-Beispielprogramm sowie Greatmaps verwenden die Kacheln. GreatMaps kann sie speichern, so daß später keine erneuten Serverzugriffe nötig sind.

Rohdaten erhältst du z.B. von Geofabrik unter http://download.geofabrik.de/europe/germany.html (für Baden-Württemberg gibt es auch die Regireungsbezirke einzeln).

Wie diese Rohdaten mit OSMSharp lädt, als Karte darstellt, bearbeitet, und seine Bearbeitungen speichert, weiß ich leider nicht.

Achtung: diese “.osm.pbf” Dateien sind stark komprimiert - rechne mal mit gur dem 10fachen Speicherbedarf für die entpackten Daten.
Es könnte also empfehlenswert sein, noch kleinere Bereiche daraus auszuschneiden. Geht z.B. mit Osmosis.

Tja, als .Net-Fans sind wir in der OpenStreetMap-Welt eine kleine Minderheit. Wegen allerhand Schwierigkeiten (wieviel Daten kann ich über die API erhalten? Wie ist die XML-Schema-Definition von osm? Da gibt’s ein paar xsd - ich habe Klassen damit erzeugt, versucht eine von JOSM erstellte osm-Datei zu laden, und kein einziges Mal hat das funktioniert…) programmiere ich so ungefähr nichts mit OSM, wende nur die - zumeist in Java geschriebenen - Tools an.

Naja, für Microsoft gibt’s halt keinen Support :stuck_out_tongue:

Mal andersrum gefragt: Bei was wüsstest du nicht wie du es erhalten könntest?

Völlig OT: Wozu braucht man das überhaupt?

JOSM-OSM-XML unterscheidet sich etwas vom normalen OSM-XML :wink:

;D ich quäle mich so durch, wenn ich es fertig habe teile ich es gerne.

Habe das so Verstanden das die Kachel von http://tile.openstreetmap.org/{0}/{1}/{2}.png geladen werden, kann man das nich beim laden begrenzen also gleich zun Tile’n von BaWü springen…?

Hallo, stimmt ich habe schon manche Projekte gemacht auch OOO Anwendung aus WPF heraus, aber das hier ist schon was zum beißen

Habe ja oben schon mal ein Link geteilt vom codeprojekt, nun habe ich eine schöne Seite gefunden was die tiles angeht
http://oms.wff.ch/calc.php?baseurl=cylce&lat=47.629000&long=7.262000&longto=7.906000&latto=47.354000
Nun möchte ich in meinem Programm das gleich BaWü angezeigt wird, in dem Programm für 0,0,0 fuktioniert das so

   private const string TileFormat = @"http://tile.openstreetmap.org/{0}/{1}/{2}.png";
 internal static BitmapImage GetTileImage(int zoom, int x, int y)
        {
            if (string.IsNullOrEmpty(CacheFolder))
            {
                throw new InvalidOperationException("Must set the CacheFolder before calling GetTileImage.");
            }

            double tileCount = Math.Pow(2, zoom) - 1;
            if (x < 0 || y < 0 || x > tileCount || y > tileCount) // Bounds check
            {
                return null;
            }

            Uri uri = new Uri(string.Format(CultureInfo.InvariantCulture, TileFormat, zoom, x, y));
            return BitmapStore.GetImage(uri);
        }

Was macht er da, bügelt der die URL auf 0,0,0.

Erst mal debuggen.
Schaut uri korrekt aus? So in etwa http://tile.openstreetmap.org/8/134/89.png
Wieso ist deine Funktion “static”?
Wie rufst du sie auf - etwa mit nem Lambda oder mit allerhand Mulit-Threading?
GreatMaps enthält auch den Code, sich die Tiles herunterzuladen, auch von Google und Bing und Co.