当前位置: 首页 > 知识库问答 >
问题:

GeoJSON.NET与谷歌地图在ASP. NET MVC

邢博文
2023-03-14

我正在尝试使用ASP.NETMVC5使用geoJSON.NET库创建geoJSON数据并将其加载到Google地图中,尽管我在某些地方做了一些错误的事情。

使用GitHub站点上发布的示例代码,我的控制器如下所示:

public ActionResult GetGeoJson()
{
    var point = new GeoJSON.Net.Geometry.Point(
                    new GeoJSON.Net.Geometry.GeographicPosition(45.79012, 15.94107));
    var featureProperties = new Dictionary<string, object> { {"Name", "Foo"} };
    var model = new GeoJSON.Net.Feature.Feature(point, featureProperties);
    var serializedData = JsonConvert.SerializeObject(model, Formatting.Indented,
               new JsonSerializerSettings
               {
                   ContractResolver = new CamelCasePropertyNamesContractResolver(),
                   NullValueHandling = NullValueHandling.Ignore 
               });

    return Json(serializedData, JsonRequestBehavior.AllowGet);
}

我的看法如下:

@{
    ViewBag.Title = "Map";
}

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=foobar"></script>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>

<script type="text/javascript">
    function initialize() {

        var centerPoint = new google.maps.LatLng(53.710921, -1.626776);

        var mapOptions = {
            center: centerPoint,
            zoom: 12
        };

        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
        map.data.loadGeoJson('/Home/GetGeoJson');

    }

    google.maps.event.addDomListener(window, 'load', initialize);
</script>

<div id="map-canvas">

</div>

当我加载页面并在chrome中检查控制台时,我有以下错误:

未捕获的InvalidValueError:不是功能或功能集合

如果我在浏览器中转到我的Action,它会输出以下内容:

"{\r\n  \"geometry\":
{\r\n    \"coordinates\": [\r\n      15.94107,\r\n      45.79012\r\n    ],
\r\n    \"type\": \"Point\"\r\n  },
\r\n  \"properties\": {\r\n    \"name\": \"Foo\"\r\n  },
\r\n  \"type\": \"Feature\"\r\n}"

共有1个答案

澹台浩广
2023-03-14

一个相关的问题给了我答案。我需要从更改控制器中的返回

return Json(serializedData, JsonRequestBehavior.AllowGet);

return Content(serializedData, "application/json");

因为JsonResult也在序列化序列化的数据。

 类似资料:
  • 我试图实现一个地图使用谷歌地图与离子。我遵循了这个链接中的编码,但我得到的只是一个空白屏幕,不知道我哪里出错了。请帮忙 这是控制器 这是html文件 请帮忙。

  • 所以我看到了一个特殊的例外,我敢肯定的是谷歌地图的绘图代码。 我有一个片段,在那里我以编程方式添加了一个支持地图片段,然后我在其中操纵谷歌地图实例。 这是stacktrace: 我无法可靠地复制它(尽管这种情况经常发生),我已经查看了ReadWriteDirectByteBuffer和ShortToByteBufferAdapter,但没有任何东西突然出现在我面前。 有什么想法吗?

  • 我认为问题是我需要添加构建提示。我可以找到在哪里添加他们,但我不确定他们应该是什么格式。我也不知道要补充什么。我想我发现了一个帖子,说我需要添加Android.xapplication=Android:value=“Your Key”/>Android.xPermissions= 但我不确定构建提示条目表单中的格式是什么

  •        LSV默认的对谷歌影像进行了加载,如果需要加载其他的谷歌地图数据,可以通过LSV中直接点击即可加载。

  • 我正在遵循官方的Google身份验证流程。我的应用程序已经使用了最新版本的Google地图。 项目 应用程序 地图下方有一条红线,弹出窗口显示找到了11.8.0和11.4.2。构建错误消息如下:, 错误:任务“:应用程序:进程”的执行失败。 请通过更新谷歌服务插件的版本来修复版本冲突(有关最新版本的信息,请访问https://bintray.com/android/android-tools/co

  • 最近Chrome开始发出以下警告: [违规]将非被动事件侦听器添加到阻止滚动的触摸移动事件。考虑将事件处理程序标记为“被动”,以使页面更具响应性。看https://www.chromestatus.com/feature/5745543795965952 这些都来自JavaScript谷歌地图API代码。我可以在自己的代码中将{passive:true}添加到addEventListener(),