Javascript ArcGIS API-调用函数onClick()
我已经设法使用ArcGIS javascript API使我的平铺地图正常工作。但是,我希望能够切换图层(显示不同的年份)。我创建了一个函数,可以执行以下操作:Javascript ArcGIS API-调用函数onClick(),javascript,function,onclick,arcgis-js-api,Javascript,Function,Onclick,Arcgis Js Api,我已经设法使用ArcGIS javascript API使我的平铺地图正常工作。但是,我希望能够切换图层(显示不同的年份)。我创建了一个函数,可以执行以下操作: require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", "esri/geometry/Point", "esri/SpatialReference", "dojo/domReady!"], function (Map, Tile
require(["esri/map",
"esri/layers/ArcGISTiledMapServiceLayer",
"esri/geometry/Point",
"esri/SpatialReference",
"dojo/domReady!"],
function (Map, Tiled, Point, SpatRef) {
...
function veranderTiled(jaar){
map_Thema_2.removeAllLayers();
tiled = new Tiled(
"http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_"+jaar+"/MapServer");
map_Thema_2.addLayer(tiled);
}
...
});
当我,比如说,在我的页面上的任意位置按下一个按钮时,我想调用这个函数。像这样:
<input name="" type="button" onClick="veranderTiled(2015)" value="Ander jaar" />
函数本身运行良好,但我似乎无法从require(…)部分之外的任何地方调用它。我不确定javascript如何处理这种可访问性(主要用于C++),但我确实想知道我应该做些什么更改,以便能够从这个特定脚本之外调用这个函数
编辑:正如预期的那样,控制台返回未定义的函数。是否有方法将其指向正确的位置(如map.veranderTiled(2015)?这是一个范围问题-正如您猜测的,函数仅在
require
回调的范围内定义
解决此问题通常有两种方法
第一个是给按钮一个ID,并在require回调中为其分配事件处理程序(假设脚本位于body
的末尾,或者您需要dojo/domReady!
等待body首先加载):
(您也可以使用连接事件,尽管在这种情况下这并不重要。)
第二种方法是使函数全局可用,这通常是不鼓励的,因为如果您的代码偶尔这样做,全局变量作用域很快就会变成wild west:
var veranderTiled; // Declare outside to be globally available
require(..., function (...) {
...
// Define inside to be able to use loaded modules
veranderTiled = function (jaar) {
...
};
...
});
var veranderTiled; // Declare outside to be globally available
require(..., function (...) {
...
// Define inside to be able to use loaded modules
veranderTiled = function (jaar) {
...
};
...
});