Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ArcGIS API-调用函数onClick()_Javascript_Function_Onclick_Arcgis Js Api - Fatal编程技术网

Javascript ArcGIS API-调用函数onClick()

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

我已经设法使用ArcGIS javascript API使我的平铺地图正常工作。但是,我希望能够切换图层(显示不同的年份)。我创建了一个函数,可以执行以下操作:

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) {
        ...
    };

    ...
});