【问题标题】:Using c# with JavaScript in ArcGIS在 ArcGIS 中使用 c# 和 JavaScript
【发布时间】:2014-08-31 14:18:49
【问题描述】:

我是 ArcGIS 新手。我正在使用 API 为地图上的位置添加书签。单击特定位置(例如戈尔韦湾)时,地图将放大到该位置。

                      <script>
    dojo.require("dijit.layout.BorderContainer");
    dojo.require("dijit.layout.ContentPane");
    dojo.require("dijit.form.DropDownButton");
    dojo.require("esri.map");
    dojo.require("esri.dijit.Bookmarks");
    dojo.require("esri/dijit/HomeButton");
    dojo.require("dojo/domReady!");

    var map, bookmarks, home;
    function init() {
        map = new esri.Map("map", {
            basemap: "oceans",
            center: [-7.5, 53],
            zoom: 6
        });

用户可以选择的位置列表是使用 JavaScript 生成的,如下例所示。您可以使用空间参考在地图上定位一个点,然后为其命名。

        // Bookmarks can be specified as an array of objects with the structure:
        // { extent: <esri.geometry.Extent>, name: <some string> }
        var bookmarks_list = [{
            "extent": {
                "spatialReference": {
                    "wkid": 102100
                },
                "xmin": -1882000,
                "ymin": 6638000,
                "xmax": -316000,
                "ymax": 7583000
            },
            "name": "Full View....."
        }, {
            "extent": {
                "spatialReference": {
                    "wkid": 102100
                },
                "xmin": -1020761,
                "ymin": 7009798,
                "xmax": -996800,
                "ymax": 7048100
            },
            "name": "Galway Bay"
        }, {
            "extent": {
                "spatialReference": {
                    "wkid": 102100
                },
                "xmin": -939400,
                "ymin": 6756000,
                "xmax": -890400,
                "ymax": 6785500
            },
            "name": "Cork Harbour"
        }, {
            "extent": {
                "spatialReference": {
                    "wkid": 102100
                },
                "xmin": -1123000,
                "ymin": 6839100,
                "xmax": -1074100,
                "ymax": 6868600
            },
            "name": "Tralee Bay"
        } ];


        // Create the bookmark widget
        bookmarks = new esri.dijit.Bookmarks({
            map: map,
            bookmarks: bookmarks_list
        }, dojo.byId('bookmarks'));


    //show map on load 
    dojo.ready(init);
    home.startup();


</script>

我的问题是,我如何获得 JavaScript“名称”值,例如戈尔韦湾并将其传递给 c# 函数?你是如何关联 c# 和 JavaScript 的?我是新手,所以我会很感激任何建议谢谢

【问题讨论】:

    标签: c# javascript maps arcgis


    【解决方案1】:

    正如您提到的 C# 和 JavaScript,我猜您是在 .Net 环境中托管您的应用程序。但是,JavaScript API 仅在客户端运行,所以我不确定您想使用 C# 实际做什么?如果您希望服务器端对客户端上发生的事情做出响应,那么您可能希望调用在您的服务器上运行的 Web 服务器并为其提供任何客户端属性。我为此使用 .Net Web API。

    您可能想进一步阅读:

    1. ESRI JavaScript API (https://developers.arcgis.com/javascript/),
    2. 用于调用 web 服务的 dojo 请求模块 (http://dojotoolkit.org/documentation/tutorials/1.10/ajax/)
    3. ASP.Net Web API (http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api)。

    另一件事:我注意到您使用的是较旧的 Dojo 语法(v1.7 之前),鉴于 ESRI 甚至 Dojo 本身尚未将所有教程更新为 1.7+ 语法,这是一个容易犯的错误。但是,如果您要开始一个新项目,我会从一开始就使用新语法。 dojo 网站有另一个关于差异的教程(与上面相同的链接,只需上一级)。

    【讨论】:

      【解决方案2】:

      为鼠标单击书签创建事件处理程序。在事件处理程序中,将 Ajax 请求发送到基于 C# 的 default.apx 页面或将书签名称作为查询字符串传递的 Url。

      这是一个例子。我无法让bookmark event click 传递任何数据,所以我使用了 Jquery。我还添加了 1 秒延迟以确保书签完成加载。

      <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
      
      <script>
      setTimeout(function () {
      $("#bookmarks .esriBookmarkLabel").click(function () {
          $.get("default.aspx?bookmarkName=" + $(this).html(), function (data) {
                  $(".result").html(data);
              });                
          });
      },1000);
      </script>
      

      【讨论】:

        猜你喜欢
        • 2017-06-30
        • 2011-07-08
        • 1970-01-01
        • 2016-07-27
        • 2014-05-09
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 2018-09-04
        相关资源
        最近更新 更多