Hi,
längere Zeit habe ich GMap.NET in mehreren meiner Programme eingesetzt und Tiles per smb wie auch mod_tile angezeigt. Leider habe ich keine Möglichkeit gefunden, tiles von zwei oder mehr Quellen übereinander zu legen. Darum suche ich gerade eine Alternative.
Ich brauche die Möglichkeit, dynamisch Marker zu erzeugen und die Position der Karte an die Form zu übergeben. Clicks sollen ebenso möglich sein.
Habe mir jetzt mal SharpMap angeschaut und bin etwas unentschlossen. Es ist halt ein bisschen Overkill und ich bekomme zwar verschiedene Overlays übereinander gelegt, aber ich bekomme die Karte nicht aktualisiert um die Layer zu zeigen. Stattdessen muss ich erst mit der Maus auf der Karte rumfahren, während ich die linke Maustaste gedrückt halte Oo… Außerdem muss ich wohl jede Koordinate und den Zoom umrechnen… Bisher blicke ich das nur absolut nicht. Kann mir da jemand helfen? Gibt es eine einfachere Alternative?
Ich weiss nicht, ob du “nur sehen” meinst oder das beim Editieren brauchst.
Sehen: Openlayers kann mehrere Layer anzeigen und jedes kann eine eigene Transparenz haben. Man kann da auch Slider (Schieberegler) programmieren.
Editieren: Auf die Gefahr hin, das es jetzt “nicht schon wieder” heisst: Josm kann das! Josm hat am unteren Rand des Ebenen-Menüs einen senkrechten Schieberegler für die Transparenz.
Hi,
danke für die Antworten! Habe zuerst auch an OL/Leaflet gedacht. Allerdings weiss ich nicht, ob und wie ich dann auf Clicks in der Karte sowie das Erstellen von Markern etc im Programm reagieren muss, damit das auch auf der Webseite geht… Und ja, das Programm wird noch mehr machen, als nur die Karte anzeigen, und daher müssen GUI und Karte miteinander Daten und Events austauschen können.
@Wambacher. Ich mag JOSM, aber ich brauche etwas, das mit die Kartendaten anzeigen kann und direkt aus dem GUI gesteuert werden kann bzw Daten an das GUI weitergeben kann.
hmm, Ich habe jetzt mal weiter mit C# und SharpMap gespielt und es ging eigentlich alles, was ich wollte, programm läuft… ABER wenn ich den Mittelpunkt bei “48.55783 / 8.98079” haben will, muss ich als center “1000000.0 / 6200000.0” angeben Oo
Auch alle Trasformationen mit .ImageToWorld() und so weiter bringen mich absolut nicht weiter… Es kommt auch nicht mal im Ansatz etwas dabei raus, was auch nur im entferntesten mit einer mir bekannten Koordinate zu tun hat… http://tools.retorte.ch/map/?wgs84=48.55783,8.98079&zoom=15
ka, was das fürn schwachsinn ist, aber entweder wird sharpmap eh fast nicht verwendet und niemand braucht wgs84 oder bei mir läuft was total schief… Aber so ne Map zu erstellen, n Layer einzufügen und einen Mittelpunkt setzen ist jetzt eigentlich eher nich so anspruchsvoll
So,
und für alle, die auch Probleme damit haben, hier die Lösung:
var ctFac = new ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory();
var csSrc = ProjNet.CoordinateSystems.GeographicCoordinateSystem.WGS84;
var csTgt = ProjNet.CoordinateSystems.ProjectedCoordinateSystem.WebMercator;
var ct = ctFac.Create(csSrc, csTgt);
var ptWebMercator = ct.MathTransform.Transform(new double[] { 8.98079, 48.55783 });
für die letzte Zeile kann man auch schreiben:
var ptWebMercator = ct.MathTransform.Transform(new GeoAPI.Geometries.Coordinate(8.9831, 48.5568));
So wandelt man dann GPS-Coordinaten um in eine Projektion, die SharpMap versteht