Offline Kartenmaterial mit Visual Studio öffnen

  • Hallo,


    ich möchte ein geocaching spiel für mein handy (HTC HD2) schreiben. Dazu möchte ich keine online karten verwenden, sondern runtergeladene karten von der speicherkarte aus.


    die programme für mein handy (windows mobile 6.5) schreibe ich mit visual studio 2008.


    Ich habe mal von "NaviMapper" einen kartenabschnitt runtergeladen (.nmap datei) und konnte die auch mit ein NaviComputer auf meinem Handy abspielen.


    Jetzt will ich selbst so ein Programm schreiben, da ich gerne spezielle hinzufügungen machen möchte. Wo das Kartenmaterial her ist, ist für mich erst mal egal, hauptsache open source und in VS2008 abspielbar.


    Weiß jemand wie ich ein programm in VS2008 screiben kann dass der mir die karten anzeigt? Als Sprache steht c#, c++ und VB zur verfügung.


    Ich bin zwar ein erfahrener programmierer, aber das war bis jetzt nur auf dateneben mit einer userform.
    grafische sachen mach ich zum erstenmal und weiß auch gar nicht mit welchem element ich die karten öffnen kann. (picturebox?)


    ich hoffe mir kann jemand helfen.



    gruß win98

  • Hallo,


    das Problem an sich ist erst einmal, daß es kein wirkliches Kartenmaterial gibt. Du mußt zuerst die Daten aus der OSM Datenbank ziehen (liegen dann als XML vor) und mußt dann daraus deine eigenen Karten rendern. Ich glaube, daß insbesondere viele Mobile Anwendungen eigene Renderer geschrieben haben.


    Schau Dir doch mal die Openstreetmap.org Karte an. Da kannst Du sehen, daß die Karten aus Kacheln besteht. Das Programm Kosmos kann Dir z.B. Kacheln für einzelne Ausschnitte erstellen, die könntest Du dann mit ausliefern. Für die Darstellung in Deinem Programm müßtest Du dann in der Paint Methode (z.B. von einem eigenen UserControl) die Kacheln richtig zusammensetzen.


    Es gibt auf der Opensteetmap Seite eine Wiki (wiki.openstreetmap.org), dort gibt es einen Bereich für 'Development', vielleicht findest Du dort mehr Infos. Unter forum.openstreetmap.org gibt es auch eine recht aktiven Bereich für Development.


    Grüße


    Michael


  • Hallo und Willkommen im Forum,


    mit deinem Projekt hast du dir ja einiges Vorgenommen!


    Hier in diesem Forum ist nur dahingehend ein Problem das es sich hier weniger um ein "Programmierer-Forum" als eher um ein Anwender und Skin/Tuning der Programme Forum handelt- Das heist das es nicht grad von Programmier-Cracks hier so wimmelt!


    Die die sich hier einem ähnlichen Projekt angenommen haben , haben auch klein angefangen und sind teilweise schon etliche jahre am optimieren ihres Programms - nee Lebensaufgabe halt !


    So nun zu deinen Fragen!


    Als erstes solltest du klären in welchem Format du die Karten vorliegen haben möchtest! Für beides gibts es schon fertige Karten!


    1. Als Vector
    2. Als Rasterkarten


    Für 1. würd sich evtl. anbieten sich an das Format von NaviPOWM bzw. IMG-Garminkarten zu halten.
    Vorteil : Keine Rasterung beim Zoomen, relativ wenig Speicherverbrauch auf der SD... , Mit OSM+mkgmap läst sich recht einfach eigene Karten mit selbstedinierten Inhalt erstellen.
    Nachteil: Beim Rendern der Karten ist man Prozessortechnisch eingeschränkt (dadurch optisch nicht ganz so schön wie evtl mit Rasterkarten), Als Datenquelle ist man fast nur OSM bzw. einige kleine locale Quellen beschränkt (freie Garminkarten)



    Für 2. gehen praktisch alle Quellen die man irgendwie in PNG/JPG... Grafiken überführen kann (selbst gescannte/Fotographierte Karten, Google Maps/Earth und ähnliche auch OSM-Karten.
    Vorteil: optisch kann man auf Rechenpower von PC's/Servern zurückgreifen, viele Datenquellen. Hier würd sich Mobile Atlas Creator und Tintenbrot free Tile Converter anbieten (leicht hier im Forum bzw. im Netz zu finden).
    Nachteil: viel Speicherverbaruch auf SD (Rasterkarten selbst und da man auch davon verschiedene Zoomstufen braucht um die Rasterung in Grenzen zu halten)[vielleicht nicht mehr ganz so kritisch bei den SD-Preisen!], meist kein Einfluß auf das ausehen der Karte (Ausser Cloudmade - da kann man selbst definierte Karten aus OSM erstellen lasen).


    Ich an deine Stelle würd mich etwas im Rasterkartenbereich umsehen - mir Ideen holen evtl. ist es dort auch möglich sich direkt mit den Programmierer zu kontaktieren (mir bekannt das NaviPOWM und Glopus - Programmierer hier im Forum rumtummeln - allerdings sollte das auf nötigste sich beschränken - die haben genug mit ihren Programmen zu tun und wollen sicher kein Fernkurs geben!!!!)


    Ausserdem würd ich mich in anderen Forum die sich mehr mit dem Programmieren beschäftigen bezüglich des erstellen des Programms schlauer machen!


    Gruß
    Silver

    Regioausflug.de Wandertourenplaner für Odenwald, Rhön, Mittelrhein und Taunus!!!!


    Ein Stau ist nur hinten blöd - vorne gehts !!!!

  • das Problem an sich ist erst einmal, daß es kein wirkliches Kartenmaterial gibt. Du mußt zuerst die Daten aus der OSM Datenbank ziehen (liegen dann als XML vor) und mußt dann daraus deine eigenen Karten rendern. Ich glaube, daß insbesondere viele Mobile Anwendungen eigene Renderer geschrieben haben.

    Schau Dir doch mal die Openstreetmap.org Karte an. Da kannst Du sehen, daß die Karten aus Kacheln besteht. Das Programm Kosmos kann Dir z.B. Kacheln für einzelne Ausschnitte erstellen, die könntest Du dann mit ausliefern. Für die Darstellung in Deinem Programm müßtest Du dann in der Paint Methode (z.B. von einem eigenen UserControl) die Kacheln richtig zusammensetzen.

    Ich stell mir "rendern" so vor, dass ich meine gekachelte deutschlandkarte mit Zoomstufe schon runtergeladen hab und dann anhand der gps position sage, die position liegt im 2.bild von rechts, dass dann öffne/zoome, dort dann die gps liegt auf dem letzten bild, das öffne/zoomre... usw bis ich die letzte zoomstufe erreicht hab.


    wie das programmiertechnisch geht, kA. Hatte gehofft da gibt befehle ähnlich wie
    "picturebox1.image = mappath(17, 50.26876 , 120.545684)"

    Als erstes solltest du klären in welchem Format du die Karten vorliegen haben möchtest! Für beides gibts es schon fertige Karten!

    Eigentlich mir egal. Speicherkarten gibt es bis zu 32GB, und prozessor haben die meisten Phones schon 1GHz.

    Für 1. würd sich evtl. anbieten sich an das Format von NaviPOWM bzw. IMG-Garminkarten zu halten.
    Vorteil : Keine Rasterung beim Zoomen, relativ wenig Speicherverbrauch auf der SD... , Mit OSM+mkgmap läst sich recht einfach eigene Karten mit selbstedinierten Inhalt erstellen.
    Nachteil: Beim Rendern der Karten ist man Prozessortechnisch eingeschränkt (dadurch optisch nicht ganz so schön wie evtl mit Rasterkarten), Als Datenquelle ist man fast nur OSM bzw. einige kleine locale Quellen beschränkt (freie Garminkarten)

    Hab mit mal.Ich hab mir mal "POI-D" runtergeladen. Da ist wie ich mir vorgestellt hab ein bmpfile und ein txt file wor drin steht in welchen gps positionen das bmp file angezeigt wird. das will ich später auch mit meinen eigenen bildern machen. Aber dafür brauch ich erstmal das kartenmaterial angezeigt. jetzt hab ich die "TOPO-CH.img" runtergeladen (weil die die kleinste war). Ich konnts leider nicht mir irfan view öffnen^^
    Ich muss mal schaun wie weit ich jetzt mit "mkgmap" komme.

    Für 2. gehen praktisch alle Quellen die man irgendwie in PNG/JPG... Grafiken überführen kann (selbst gescannte/Fotographierte Karten, Google Maps/Earth und ähnliche auch OSM-Karten.
    Vorteil: optisch kann man auf Rechenpower von PC's/Servern zurückgreifen, viele Datenquellen. Hier würd sich Mobile Atlas Creator und Tintenbrot free Tile Converter anbieten (leicht hier im Forum bzw. im Netz zu finden).
    Nachteil: viel Speicherverbaruch auf SD (Rasterkarten selbst und da man auch davon verschiedene Zoomstufen braucht um die Rasterung in Grenzen zu halten)[vielleicht nicht mehr ganz so kritisch bei den SD-Preisen!], meist kein Einfluß auf das ausehen der Karte (Ausser Cloudmade - da kann man selbst definierte Karten aus OSM erstellen lasen).

    Das hatte ich mir erhofft dass ich aus der .nmap datei die ich runterladen kann irgendwie n jpg rauskriege. weil beim runterladen hat man gesehn wie er einzelne breiche runtergeladen hat und dann in die datei gesteckt. ist .nmap ein allgemeines OSM format, oder speziell von navimapper? (ich denk zweites)

    Ich an deine Stelle würd mich etwas im Rasterkartenbereich umsehen - mir Ideen holen evtl. ist es dort auch möglich sich direkt mit den Programmierer zu kontaktieren (mir bekannt das NaviPOWM und Glopus - Programmierer hier im Forum rumtummeln - allerdings sollte das auf nötigste sich beschränken - die haben genug mit ihren Programmen zu tun und wollen sicher kein Fernkurs geben!!!!)

    Mittlerweile wäre ich auch bereit den programmierer dafür zu bezahlen...


    Wer kann mir OSM öffnen aber erstmal vielen dank, ich werde mal mit den infos versuchen weiterzukommen.

  • Hallo


    ich verstehe zwar nicht was du Offline im VisualStudio für Karten darstellen willst, aber es gibt OpenSourceProgramme wo du spicken (lernen) kannst ( VataviaMap,GpsCycleComputer...). MOBAC ist ach ne feine Sache! Das Format von NaviComputer ist ne SQLite-DB, welches die Kacheln (256+256 Pixel) als Blob-gespeichert hat. Derzeit versuche ich das als Ausgabeformat in MOBAC zu integrieren...


    MfG
    Achim

    Einmal editiert, zuletzt von womisa ()

  • Die TOPO-CH.img kannst du nicht mit Ifran View anschauen da diese eine Vectorkarte ist und erst im Gerät gerendert wird.


    Ich an win98 seiner stelle würd gucken ob ich das nicht mit schon bestehenden Programmen und evtl. selbstgeschrieben Zusatztols realisieren könnte.
    Glopus würd sich da anbieten (das läuft auch unter wm6.5 - auch wenn es auf einigen Geräten Probleme geben soll) - das kann ja schon das was gefordert wurde Karte + POI's darstellen. Ausserden ist es möglich damit Werte wie die Position Geschwindigkeit usw. von Glopus an andere Programme zu übergeben.
    Mit einem Trick ist es sogar möglich eine dynamische map.ini (einblendungen in der Kartenansicht) bzw. benutzdefinierte Seite.


    Gruß
    Silver

    Regioausflug.de Wandertourenplaner für Odenwald, Rhön, Mittelrhein und Taunus!!!!


    Ein Stau ist nur hinten blöd - vorne gehts !!!!

  • also dass das eine SQL datenbank ist hätt ich jetzt nicht gedacht...


    ich konnte die nmpa datei mit nem SQLite browser öffnen und mit nem query


    SELECT Tile FROM TilesData
    WHERE id = (SELECT id FROM Tiles WHERE X=x AND Y=y AND Zoom=zoom)


    als antwort krieg ich "?PNG"


    ich werd dann mal jetzt versuchen das irgendwie in c# in ner picturebox auszugeben.



    offline karte möchte ich verwenden, damit man nich immer solange die maps runterladen muss.
    Oder wäre es sehr viel einfacher online karten zu verwenden?


    ich stell mir das am ende so vor, das ich eine funktion "CenterMap(50.168576 , 8.35764);" hab die mir die Karte Zentriert und eine Funktion "AddMarker(50.1688 , 8.351, "Ziel");" hab die mir eine postition mit dem Namen "Ziel" markiert, und davon beliebig viele.


    idel wären halt offline maps, aber wenns halt jetzt 2jahre dauert das hinzubekommen, dann würde ich unter umständen auch auf online maps zurückgreifen, sollte das viel einfacher gehn...

  • Zitat

    offline karte möchte ich verwenden, damit man nich immer so lange die maps runterladen muss.


    Wieso lange? Geocaching spielt sich doch in sehr eng begrenztem Raum, das sind dann ja keine nennenswerten Datenmengen!
    Wie geht es denn deinem Projekt?