You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2015-06-09 08:32:55

ngt
Member
Registered: 2011-05-30
Posts: 187

C# Control zur Kartendarstellung

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?

Offline

#2 2015-06-09 08:46:40

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: C# Control zur Kartendarstellung

ngt wrote:

Leider habe ich keine Möglichkeit gefunden, tiles von zwei oder mehr Quellen übereinander zu legen. Darum suche ich gerade eine 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.

josm_slider.png

Gruss
walter

Last edited by wambacher (2015-06-09 08:55:24)

Offline

#3 2015-06-09 08:59:59

SammysHP
Member
From: Celle, Germany
Registered: 2012-02-27
Posts: 1,707
Website

Re: C# Control zur Kartendarstellung

Aber es wird wohl eher eine Bibliothek gesucht, die in C# eingesetzt werden kann.

Offline

#4 2015-06-09 09:25:37

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: C# Control zur Kartendarstellung

SammysHP wrote:

Aber es wird wohl eher eine Bibliothek gesucht, die in C# eingesetzt werden kann.

schade, dan hab ich das wohl überlesen.

Offline

#5 2015-06-09 10:26:34

viw
Member
Registered: 2010-05-15
Posts: 2,623

Re: C# Control zur Kartendarstellung

Was spricht denn gegen eine Website die mit Openlayers arbeitet und welche über C# eingebunden wird?

Offline

#6 2015-06-09 10:33:51

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: C# Control zur Kartendarstellung

viw wrote:

Was spricht denn gegen eine Website die mit Openlayers arbeitet und welche über C# eingebunden wird?

wenig.

Leaflet sollte sowas auch können, bin mir aber net sicher (steige erst gerade um, denn OL3 tu ich mir nicht an).

Offline

#7 2015-06-09 12:08:07

ngt
Member
Registered: 2011-05-30
Posts: 187

Re: C# Control zur Kartendarstellung

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.

Offline

#8 2015-06-09 12:47:29

kartler175
Member
Registered: 2012-09-10
Posts: 326

Re: C# Control zur Kartendarstellung

Nach der Beschreibung könnte evtl. das für dich in Frage kommen.

Offline

#9 2015-06-09 13:37:45

ngt
Member
Registered: 2011-05-30
Posts: 187

Re: C# Control zur Kartendarstellung

leider ActiveX....
Bin schon kurz davor C# in die Tonne zu treten und stattdessen Java zu verwenden.. Aber da ist GUI-basteln dann wieder eine Strafe :X

osmsharp geht wegen der Lizenz wieder nicht..

Last edited by ngt (2015-06-09 13:38:12)

Offline

#10 2015-06-09 13:48:39

kartler175
Member
Registered: 2012-09-10
Posts: 326

Re: C# Control zur Kartendarstellung

Noch ein Angebot (ohne eigene Erfahrungen damit).

P.S. Könntest Du mich als Laien aufklären, warum ActiveX für dich nicht in Frage kommmt?

Last edited by kartler175 (2015-06-09 13:53:09)

Offline

#11 2015-06-09 13:57:39

viw
Member
Registered: 2010-05-15
Posts: 2,623

Re: C# Control zur Kartendarstellung

ngt wrote:

leider ActiveX....
Bin schon kurz davor C# in die Tonne zu treten und stattdessen Java zu verwenden.. Aber da ist GUI-basteln dann wieder eine Strafe :X

osmsharp geht wegen der Lizenz wieder nicht..

Kannst du nicht J# und C# mischen?

Offline

#12 2015-06-09 13:57:57

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: C# Control zur Kartendarstellung

ngt wrote:

@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.

jo, hatte ich mit verguckt - und auch ein wenig gewundert, dass du das Feature nicht kennen solltest wink

Gruss
walter

Offline

#13 2015-06-09 14:13:58

roald-linus
Member
Registered: 2012-10-03
Posts: 72
Website

Re: C# Control zur Kartendarstellung

Hi,

wenn Du C# in die Tonne treten willst, dann kann ich Dir das WebView-Control von Java (genauer JavaFX) empfehlen.

http://docs.oracle.com/javase/8/javafx/ … bView.html

ein Beispiel:
http://captaincasa.blogspot.co.nz/2014/ … p.html?m=1

Du kannst dann sowohl mit JavaScript und Java programmieren, auf Ereignisse auf der Webseite reagieren  usw.

Der große Vorteil ist, dass Du einfach fertige JavaScript-Sachen weiterverwenden kannst.

Grüße

Offline

#14 2015-06-09 15:17:44

ngt
Member
Registered: 2011-05-30
Posts: 187

Re: C# Control zur Kartendarstellung

roald-linus wrote:

Der große Vorteil ist, dass Du einfach fertige JavaScript-Sachen weiterverwenden kannst.

Hehe, na ob das den Nachteil mit den drecks GUI-basteleien und den Portierungen einiger Klassen von C# ausgleichen kann... big_smile

Argh.. ich hasse es.. sad

Offline

#15 2015-06-09 17:07:27

roald-linus
Member
Registered: 2012-10-03
Posts: 72
Website

Re: C# Control zur Kartendarstellung

ngt wrote:
roald-linus wrote:

Der große Vorteil ist, dass Du einfach fertige JavaScript-Sachen weiterverwenden kannst.

Hehe, na ob das den Nachteil mit den drecks GUI-basteleien und den Portierungen einiger Klassen von C# ausgleichen kann... big_smile

Argh.. ich hasse es.. sad

ach, seitdem es den Scene Builder http://gluonhq.com/products/scene-builder/ gibt, geht das doch, das ist nicht mehr wie bei Swing cool

Offline

#16 2015-06-09 22:06:07

ngt
Member
Registered: 2011-05-30
Posts: 187

Re: C# Control zur Kartendarstellung

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.5 … 79&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 roll

Offline

#17 2015-06-10 17:35:55

ngt
Member
Registered: 2011-05-30
Posts: 187

Re: C# Control zur Kartendarstellung

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

Offline

Board footer

Powered by FluxBB