9

ASP.NET MVC 3をC#で使用すると、いくつかの緯度と経度の座標で構成されるポリラインを追加するマップを表示するWebページがあります。Leaflet JavaScriptライブラリを使用すると、GeoJsonレイヤーを追加できます。C#のデータベースから経度と緯度の座標を取得し、座標のリストをJavaScriptに渡して、GeoJsonまたはGeoJsonとして作成したいと思います。

これが私が作成したいGeoJsonの例です:

var polyline = {
      "type": "Feature",
      "geometry": {
      "type": "LineString",
                    "coordinates": [
                        [-105.00341892242432, 39.75383843460583],
                        [-105.0008225440979, 39.751891803969535] …
                    ]
                },
      "properties": {
      "popupContent": "This is a polyline of many coordinates.",
      "underConstruction": false
      }
};

上記のようなGeoJsonを作成し、C#またはJavaScriptから「<em> coordinates」セクションに位置データを追加し、JavaScriptでそれを使用してレイヤーを追加するにはどうすればよいですか。

var myLayer = L.geoJson().addTo(map);
myLayer.addData(polyline);

私はGeoJSON.netの使用を開始し、次のコードを考え出しました。

foreach (Position point in Positions)
{
    coordinates.Add(point);
}

GeoJSON.Net.Geometry.LineString line = new GeoJSON.Net.Geometry.LineString(coordinates);

JavaScriptSerializer serializer = new JavaScriptSerializer();

var data = serializer.Serialize(lineString);

しかし、このGeoJSON LinseStringオブジェクトをC#からJavaScriptに渡す方法がわかりません。Jsonをそのまま使用して渡すことができませんでした:

return Json(data, JsonRequestBehavior.AllowGet);
4

2 に答える 2

4

GeoJSON.NET を簡単に見てみると、JSON.NETを使用しているため、結果を返すときに JSON.NET シリアライザーを使用する必要があります (.NET の JSON シリアライザーは JSON.NET 属性を認識しません)。次のように ContentResult をシリアル化して返すことができます (これはテストしていません)。

var line = new GeoJSON.Net.Geometry.LineString(coordinates);
string json = JsonConvert.SerializeObject(line);
return Content(json, "application/json");

または、カスタム JSON.NET ActionResultを使用できます。

ちなみに、GeoJSON 仕様に準拠していないポリゴンのシリアル化に問題があるようです。これがポリラインにも影響するかどうかはわかりません。しかし、これが 1 年経っても修正されていないという事実は、GeoJSON ライブラリにとって良いことを約束するものではありません。プロジェクトは放棄されたようです。

nettopologysuiteでGeoJSON シリアライゼーションを使用することにしました。

于 2012-08-01T09:31:51.943 に答える
1

これに対する魔法の弾丸は本当にありませんが、少なくとも正しい方向に向けることができると信じています.

PostGres/PostGIS を使用している場合は、ST_AsGeoJson関数を使用して、データベースから直接 GeoJson を返すことができます。これは便利です。それ以外の場合は、ASP MVC の事実上の標準 JSON シリアル化ライブラリである JSON.NET を調べることから始めます。私はそれが少し本格的であることに気づきました.そして、少し慣れるだけでなく、どのように進むべきかを示唆するほど深く掘り下げていません.

また、 Nuget Packageと対応するGitHub repoを持つ JSON.NET 用の GeoJson プラグインがあるようです。個人的には使用していないので、安定性や機能セットなどを正確に保証することはできませんが、いずれにせよ、出発点としては良いかもしれません.

これがお役に立てば幸いです。最終的にどうなるかをお聞きしたいと思います。

于 2012-07-30T21:44:11.333 に答える