ArcGIS API for JavaScript, NS_ERROR_DOM_BAD_URI: доступ к ограниченному URI запрещен

Я следую этому руководству:

https://developers.arcgis.com/javascript/jshelp/intro_agstemplate_amd.html

Я использую идентификатор веб-карты, который они используют в учебнике: 1a40fa5cc1ab4569b79f45444d728067

Однако когда я запускаю свой код:

var map;
require([
"esri/map",
"esri/arcgis/utils",
"dojo/domReady!"
], function(Map, arcgisUtils) {
    arcgisUtils.arcgisUrl = "file:///C:/Users/Bryan/Desktop/gis.html";
    arcgisUtils.createMap("1a40fa5cc1ab4569b79f45444d728067 ", "mapDiv").then(function(response) {
        map = response.map;
    });
});

I get the following error:

NS_ERROR_DOM_BAD_URI: доступ к ограниченному URI запрещен

В учебнике говорится следующее:

Чтобы получить доступ к веб-карте с портала за пределами ArcGIS Online, укажите свойство arcgisUrl и задайте путь к URL-адресу вашего портала перед вызовом метода createMap (): arcgisUtils.arcgisUrl = "http://pathto/portal/sharing/content/items";

Но что такое URL портала? Какой у меня URL портала?


person Bryan    schedule 24.03.2016    source источник
comment
удалите arcgisUtils.arcgisUrl, он начнет работать   -  person Vikash Pandey    schedule 25.03.2016


Ответы (1)


Мы шаг за шагом решим вышеуказанную проблему:

Прежде всего вы должны знать свой идентификатор веб-карты 1a40fa5cc1ab4569b79f45444d728067, который вы используете как общедоступный, так и частный. Я имею в виду, что он доступен каждому или созданному человеку, который его создал.

Как видите, я могу получить доступ к этому идентификатору глобально, поэтому это означает, что он не является частным, поэтому вам не нужно добавлять URL-адрес портала.

(Ниже приведены два способа доступа к веб-карте, просто замените идентификатор веб-карты в конце URL-адресов ниже).

Подробная информация об элементе указанного выше идентификатора веб-карты: нажмите здесь, чтобы увидеть сведения об идентификаторе веб-карты.

Идентификатор веб-карты в программе просмотра карт: нажмите здесь, чтобы см. идентификатор веб-карты в программе просмотра карт.

URL-адрес портала необходим только в том случае, если идентификатор веб-карты доступен не всем.


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 = "https://pathto/portal/sharing/content/items";
        arcgisUtils.createMap("1a40fa5cc1ab4569b79f45444d728067 ","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();


        });


        });

      });
<link rel="stylesheet" href="https://js.arcgis.com/3.16/dijit/themes/claro/claro.css">
    <link rel="stylesheet" href="https://js.arcgis.com/3.16/esri/css/esri.css">
    <link rel="stylesheet" href="http://developers.arcgis.com/javascript/sandbox/css/styles.css">

    <script src="https://js.arcgis.com/3.16/"></script>

<body class="claro">
    <div id="mainWindow" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline'" style="width:100%; height:100%;">
      <div id="header" class="shadow roundedCorners" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
        <div id="title"></div>
        <div id="subtitle"></div>
      </div>
      <div id="map" class="roundedCorners shadow" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"></div>
      <div id="rightPane" class="roundedCorners shadow" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'" >
        <div id="legend"></div>
      </div>
    </div>
  </body>

person Vikash Pandey    schedule 25.03.2016
comment
У меня в песочнице все работает нормально, но когда я запускаю html-файл локально или с другого сервера, карта остается пустой. Внизу экрана есть сообщение «Ожидание js.arcgis.com ...», но ничего не загружается. Я часами боролся с аргументами портала arcgisUtils.arcgisUrl, но пока безуспешно. - person Matthew Bayly; 19.04.2016
comment
@ user2995274 да ... Это может происходить из-за того, что вы запускаете этот html-файл как веб-страницу. Разверните этот URL-адрес в IIS или IDE, например в Visual Studio, надеюсь, что он начнет работать. - person Vikash Pandey; 19.04.2016
comment
@ user2995274 Если вы все еще сталкиваетесь с этой проблемой, задайте новый вопрос и укажите точный код ... или, если вы хотите, не стесняйтесь обращаться ко мне напрямую. - person Vikash Pandey; 19.04.2016