如何知道javascript的哪个部分需要标记来添加我的函数?

时间:2015-07-22 18:35:56

标签: javascript html arcgis esri arcgis-js-api

您好我正在尝试为我的地图添加一个定位按钮,但我不知道我的javascript代码的哪一部分要添加到require标记中。例如在esri/dijit/Legend之后还是什么?下面是我的代码。

 <script>
    require([
      "dojo/parser",
      "dojo/ready",
      "dijit/layout/BorderContainer",
      "dijit/layout/ContentPane",
      "dojo/dom",
      "esri/map",
      "esri/urlUtils",
      "esri/arcgis/utils",
      "esri/dijit/Legend",
      "esri/dijit/Scalebar",
      "dojo/domReady!"
    ], function (
      parser,
      ready,
      BorderContainer,
      ContentPane,
      dom,
      Map,
      urlUtils,
      arcgisUtils,
      Legend,
      Scalebar
    ) {
        ready(function () {

            parser.parse();

            //if accessing webmap from a portal outside of ArcGIS Online, uncomment and replace path with portal URL
            //arcgisUtils.arcgisUrl = "http://pathto/portal/sharing/content/items";
            arcgisUtils.createMap("7f975854312c4ca9a50aa5933c4a782e", "map").then(function (response) {
                //update the app
                dom.byId("title").innerHTML = response.itemInfo.item.title;
                dom.byId("subtitle").innerHTML = response.itemInfo.item.snippet;

                var map = response.map;

                //add the scalebar
                var scalebar = new Scalebar({
                    map: map,
                    scalebarUnit: "english"
                });

                //add the legend. Note that we use the utility method getLegendLayers to get
                //the layers to display in the legend from the createMap response.
                var legendLayers = arcgisUtils.getLegendLayers(response);
                var legendDijit = new Legend({
                    map: map,
                    layerInfos: legendLayers
                }, "legend");
                legendDijit.startup();
            });
        });
    });
</script>

1 个答案:

答案 0 :(得分:1)

您可以按任意顺序将项目添加到require数组中,但需要注意两点:

  1. 您必须以相同的顺序在函数参数列表中添加模块返回值
  2. 除非您不需要它的返回值
  3. ,否则必须先执行任何不包含函数参数返回值的项目。

    所以,换句话说......不要在domReady之后把它放进去!因为函数参数中没有返回值。例如,将它放在ScaleBar和domReady之间,然后在函数参数中添加ScaleBar之后的返回值:

    require([
      "dojo/parser",
      "dojo/ready",
      "dijit/layout/BorderContainer",
      "dijit/layout/ContentPane",
      "dojo/dom",
      "esri/map",
      "esri/urlUtils",
      "esri/arcgis/utils",
      "esri/dijit/Legend",
      "esri/dijit/Scalebar",
      "esri/dijit/LocateButton",            <-- Here
      "dojo/domReady!"
    ], function (
      parser,
      ready,
      BorderContainer,
      ContentPane,
      dom,
      Map,
      urlUtils,
      arcgisUtils,
      Legend,
      Scalebar,
      LocateButton                          <-- Here
    ) {
    

    但如上所述,订单并不重要。您可以将它作为require数组中的第一项,只要它也是函数参数列表中的第一项。