在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联系起来的?我是新手,所以我希望你能给我一些建议,谢谢
正如您提到的c#和JavaScript,我猜您是在。net环境中托管应用程序。然而,JavaScript API只运行客户端,所以我不确定你想用c#实际做什么?如果你想让服务器端做一些事情来响应客户端发生的事情,那么你可能想要调用在你的服务器上运行的web服务器,并为它提供任何客户端属性。我使用。net Web API。
您可能需要更多地阅读:
- ESRI JavaScript API (https://developers.arcgis.com/javascript/),
- 调用webservice的dojo请求模块(http://dojotoolkit.org/documentation/tutorials/1.10/ajax/)
- 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>