在ArcGIS中使用c#和JavaScript

本文关键字:JavaScript ArcGIS | 更新日期: 2023-09-27 18:12:13

我是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联系起来的?我是新手,所以我希望你能给我一些建议,谢谢

在ArcGIS中使用c#和JavaScript

正如您提到的c#和JavaScript,我猜您是在。net环境中托管应用程序。然而,JavaScript API只运行客户端,所以我不确定你想用c#实际做什么?如果你想让服务器端做一些事情来响应客户端发生的事情,那么你可能想要调用在你的服务器上运行的web服务器,并为它提供任何客户端属性。我使用。net Web API。

您可能需要更多地阅读:

  1. ESRI JavaScript API (https://developers.arcgis.com/javascript/),
  2. 调用webservice的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网站有另一个关于差异的教程(与上面的链接相同,只是上一级)。

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

下面是一个例子。我无法让书签事件点击传递任何数据,所以我使用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>