Dim*_*try 9 asp.net-mvc jquery geojson leaflet
使用带有C#的ASP.NET MVC 3我有一个网页来显示一个地图,我想在其上添加一条由多个纬度和经度坐标组成的折线.使用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
}
};
Run Code Online (Sandbox Code Playgroud)
如何创建类似于上面显示的GeoJson并将位置数据添加到C#或JavaScript 的" coordinates "部分,然后在JavaScript中使用它来添加图层:
var myLayer = L.geoJson().addTo(map);
myLayer.addData(polyline);
Run Code Online (Sandbox Code Playgroud)
我已经开始使用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);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将这个GeoJSON LinseString对象从C#传递给JavaScript.我无法使用Json传递它:
return Json(data, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
简单浏览了一下 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");
Run Code Online (Sandbox Code Playgroud)
或者更好的是,您可以使用自定义 JSON.NET ActionResult。
顺便说一句,不符合 GeoJSON 规范的多边形序列化似乎存在问题- 不确定这是否也会影响折线。但事实上,这个问题已经一年没有得到解决,这对 GeoJSON 库来说并没有什么好处。该项目似乎已被放弃。
我们选择在nettopologysuite中使用 GeoJSON 序列化,我记得它开箱即用。
| 归档时间: |
|
| 查看次数: |
6347 次 |
| 最近记录: |