2017-04-03 12 views
0

私はArcGIS Onlineパブリックアカウントを持ち、ウェブマップをWebサイトに追加しています。 LINKArcGIS Online WebMap認証タイムアウト

そして、私はこのESRIのリファレンス・ページのように私のウェブサイトに私のWebMapを追加しようとしています:

私のArcGISオンラインWebMapはこのESRIのサンプルのように見えます。ページの中央に地図が表示されます:LINK

私のウェブマップは私のウェブページによく表示されます。私のWebページにアクセスすると、私のWebMapは自分のIDとパスワードを尋ねます。私がそれを入力した場合、それは私の地図を示しています。

しかし、私は別のページに移動してマップページに戻ると、再度質問します。ページにアクセスするたびにサインインする必要がないようにタイムアウトを設定することは可能ですか?

答えて

1

私がこの質問をしたのは、自分のコードを単純化し、フロントエンドのコードで作業する方法があるかどうかを調べるためです。

私はESRIが提供したOAuthを調査しましたが、私はesri/IdentityManagerを使ってしまいました。 esri/IdentityManagerパッケージを使用するための参照がありました。

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/LayerList", 
      "esri/graphic", 
      "esri/symbols/PictureMarkerSymbol", 
      "esri/symbols/TextSymbol", 
      "esri/geometry/Point", 
      "esri/dijit/Scalebar", 
      "dojo/_base/unload", 
      "dojo/cookie", 
      "dojo/json", 
      "esri/config", 
      "esri/IdentityManager", 
      "esri/layers/FeatureLayer", 
      "dojo/domReady!" 
     ], function (
      parser, 
      ready, 
      BorderContainer, 
      ContentPane, 
      dom, 
      Map, 
      urlUtils, 
      arcgisUtils, 
      Legend, 
      LayerList, 
      Graphic, 
      PictureMarkerSymbol, 
      TextSymbol, 
      Point, 
      Scalebar, 
      baseUnload, 
      cookie, 
      JSON, 
      esriConfig, 
      esriId, 
      FeatureLayer 
     ) { 

      var mapOptions = { 
      basemap: "topo", 
        autoResize: true, // see http://forums.arcgis.com/threads/90825-Mobile-Sample-Fail 
        center: [currentPosition.lng, currentPosition.lat], 
        zoom: 15, 
        logo: false 
     }; 

      // cookie/local storage name 
      var cred = "esri_jsapi_id_manager_data"; 

      // store credentials/serverInfos before the page unloads 
      baseUnload.addOnUnload(storeCredentials); 

      // look for credentials in local storage 
      loadCredentials(); 

      parser.parse(); 

      esriConfig.defaults.io.proxyUrl = "/proxy/"; 

      //Create a map based on an ArcGIS Online web map id 
      arcgisUtils.createMap('PUT-YOUR-ESRI-KEY', "esriMapCanvas", { mapOptions: mapOptions }).then(function (response) { 

       var map = response.map; 

       // add a blue marker 
        var picSymbol = new PictureMarkerSymbol(
          'http://static.arcgis.com/images/Symbols/Shapes/RedPin1LargeB.png', 50, 50); 
        var geometryPoint = new Point('SET YOUR LAT', 'SET YOUR LONG'); 
        map.graphics.add(new Graphic(geometryPoint, picSymbol)); 

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

       //add the map layers 
       var mapLayers = new LayerList({ 
        map: map, 
        layers: arcgisUtils.getLayerList(response) 
       }, "esriLayerList"); 
       mapLayers.startup(); 

       //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 
       }, "esriLegend"); 
       legendDijit.startup(); 
      }); 

      function storeCredentials() { 
       // make sure there are some credentials to persist 
       if (esriId.credentials.length === 0) { 
        return; 
       } 

       // serialize the ID manager state to a string 
       var idString = JSON.stringify(esriId.toJson()); 
       // store it client side 
       if (supports_local_storage()) { 
        // use local storage 
        window.localStorage.setItem(cred, idString); 
        // console.log("wrote to local storage"); 
       } 
       else { 
        // use a cookie 
        cookie(cred, idString, { expires: 1 }); 
        // console.log("wrote a cookie :-/"); 
       } 
      } 

      function supports_local_storage() { 
       try { 
        return "localStorage" in window && window["localStorage"] !== null; 
       } catch (e) { 
        return false; 
       } 
      } 

      function loadCredentials() { 
       var idJson, idObject; 

       if (supports_local_storage()) { 
        // read from local storage 
        idJson = window.localStorage.getItem(cred); 
       } 
       else { 
        // read from a cookie 
        idJson = cookie(cred); 
       } 

       if (idJson && idJson != "null" && idJson.length > 4) { 
        idObject = JSON.parse(idJson); 
        esriId.initialize(idObject); 
       } 
       else { 
        // console.log("didn't find anything to load :("); 
       } 
      } 
     }); 
:しかし、だからここ arcgisUtils.createMap

を利用した個人WebMapでそれを使用して何のサンプルコードをありませんでしたが、私が働いていたサンプルコードです。

関連する問題