首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax调用从GeoJson MVC控制器获取ASP.NET数据

Ajax调用从GeoJson MVC控制器获取ASP.NET数据
EN

Stack Overflow用户
提问于 2012-07-30 11:43:48
回答 2查看 7.2K关注 0票数 9

使用ASP.NET MVC 3和C#,我有一个网页来显示地图,我想在地图上添加一条由几个纬度和经度坐标组成的折线。使用传单 JavaScript库,您可以添加GeoJson层。我希望从C#中的数据库获取经度和纬度坐标,并将坐标列表传递给JavaScript以创建GeoJsonGeoJson

下面是我希望创建的GeoJson的一个示例:

代码语言:javascript
复制
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的“坐标”部分,然后在JavaScript中使用它添加这样的层:

代码语言:javascript
复制
var myLayer = L.geoJson().addTo(map);
myLayer.addData(polyline);

我已经开始使用GeoJSON.net,并编写了以下代码:

代码语言:javascript
复制
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这样的方式传递它:

代码语言:javascript
复制
return Json(data, JsonRequestBehavior.AllowGet);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-01 09:31:51

简单介绍一下GeoJSON.NET,它使用JSON.NET,所以在返回结果时需要使用JSON.NET序列化程序( .NET中的JSON序列化程序不知道JSON.NET属性)。要做到这一点,您只需序列化并返回类似于此的ContentResult (尚未测试此):

代码语言:javascript
复制
var line = new GeoJSON.Net.Geometry.LineString(coordinates);
string json = JsonConvert.SerializeObject(line);
return Content(json, "application/json");

或者你最好用定制的JSON.NET ActionResult

顺便提一句,似乎有不符合GeoJSON规范的多边形序列化问题 -不确定这是否也影响多谱线。但是,这个问题还没有解决一年,这对一个GeoJSON库是没有好处的。这个项目似乎被放弃了。

我们选择了在GeoJSON中使用网络拓扑套件序列化,正如我所记得的那样,这种序列化是开箱即用的。

票数 4
EN

Stack Overflow用户

发布于 2012-07-30 21:44:11

我真的没有灵丹妙药,但我相信我至少可以为你指明正确的方向。

如果您碰巧使用PostGres/PostGIS,您可以使用AsGeoJson函数直接从数据库返回GeoJson,这很方便。否则,您将希望从查看JSON.NET开始,它实际上是ASP.MVC的标准JSON序列化库。我发现它是有点全面,我还没有深入研究它,以建议你可能会继续下去,只是获得一点熟悉。

此外,似乎有一个GeoJson插件的JSON.NET,其中有一个Nuget包装和相应的GitHub回购。我没有亲自使用过它,所以我不能确切地保证它的稳定性/特性集等等,但是无论如何,它可能是一个很好的起点。

希望这能帮上忙,我很想听听你的结局!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11720843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档