Ajax-Aufruf zum Abrufen von GeoJson-Daten vom ASP.NET MVC Controller

8

Verwendung von ASP.NET MVC 3 mit C # Ich habe eine Webseite, um eine Karte anzuzeigen, auf der ich eine Polylinie aus mehreren Breiten- und Längenkoordinaten hinzufügen möchte. Mit der Leaflet JavaScript-Bibliothek können Sie GeoJson Ebenen hinzufügen. Ich möchte die Längen- und Breitenkoordinaten von einer Datenbank in C # abrufen und die Liste der Koordinaten an das JavaScript übergeben, um GeoJson oder GeoJson zu erstellen.

Hier ist ein Beispiel für den GeoJson, den ich erstellen möchte:

%Vor%

Wie kann ich GeoJson ähnlich dem oben gezeigten erstellen und Ortsdaten zum Abschnitt " coordinates " aus C # oder JavaScript hinzufügen und dann in JavaScript verwenden, um eine Ebene als solche hinzuzufügen:

%Vor%

Ich habe angefangen, GeoJSON.net zu benutzen und habe diesen Code entwickelt:

%Vor%

Aber ich weiß nicht, wie ich dieses GeoJSON LinseString-Objekt vom C # an das JavaScript übergeben soll. Ich konnte es nicht mit Json als solche weitergeben:

%Vor%     
Dimitry 13.09.2012, 06:47
quelle

2 Antworten

3

Ich habe kurz GeoJSON.NET angeschaut und es verwendet JSON.NET , also müssen Sie es verwenden der JSON.NET-Serializer, wenn Sie Ihr Ergebnis zurückgeben (der JSON-Serializer in .NET weiß nichts über die JSON.NET-Attribute.) Um dies zu tun, können Sie einfach ein ContentResult wie dieses serialisieren und zurückgeben (nicht getestet):

%Vor%

oder besser: Sie können ein benutzerdefiniertes JSON verwenden. NET ActionResult .

Nebenbei bemerkt scheint es ein Problem mit der Serialisierung von Polygonen zu geben, die nicht der GeoJSON-Spezifikation entsprechen - nicht Sicher, ob dies auch Polylinien betrifft. Aber die Tatsache, dass dies seit einem Jahr nicht mehr feststeht, ist für eine GeoJSON-Bibliothek nicht gut. Das Projekt scheint aufgegeben zu werden.

Wir haben uns für die Verwendung der GeoJSON-Serialisierung in der nettopologysuite entschieden, die, soweit ich mich erinnere, sofort einsatzbereit war.

    
Asbjørn 01.08.2012, 09:31
quelle
1

Ich habe nicht wirklich eine magische Kugel dafür, aber ich glaube, ich kann Sie wenigstens in die richtige Richtung weisen.

Wenn Sie PostGres / PostGIS verwenden, könnten Sie die Funktion ST_AsGeoJson verwenden, um GeoJson direkt aus der Datenbank, die praktisch ist. Andernfalls sollten Sie zunächst in JSON.NET schauen, das ist die Defacto-Standard-JSON-Serialisierungsbibliothek für ASP MVC. Ich fand, dass es ein bisschen voll ist, und ich habe mich nicht tief genug hineingeschaut, um vorzuschlagen, wie man darüber hinausgehen könnte, nur um ein bisschen Vertrautheit zu erlangen.

Es scheint auch, dass es ein GeoJson-Plugin für JSON.NET gibt, das ein Nuget-Paket und ein entsprechendes GitHub Repo . Ich habe es nicht persönlich benutzt, also kann ich nicht für seine Stabilität / Feature-Set usw. bürgen, aber auf jeden Fall könnte es ein guter Startpunkt sein.

Hoffe, das hilft, und ich wäre daran interessiert zu hören, was Sie am Ende haben werden!

    
IanI 30.07.2012 21:44
quelle