FAQ
ArcGIS Maps SDK for JavaScript : Portal for ArcGIS を利用する

ナレッジ番号:5632 | 登録日:2023/09/28 | 更新日:2024/01/16

ArcGIS Maps SDK for JavaScript で Portal for ArcGIS に接続

ArcGIS Maps SDK for JavaScript はデフォルトでは ArcGIS Online を使用するように設定されています。ArcGIS Maps SDK for JavaScript を使用して Portal for ArcGIS に接続するには esri/config オブジェクトの portalUrl を使用して、ポータルの URL を設定する必要がございます。
サンプルコード:
require(["esri/config"], function(esriConfig) {
  esriConfig.portalUrl = "https://<FQDN>/<ArcGIS WebAdptor 名>";
});

また Portal クラスを利用することで、接続したポータル サイトのユーザー、グループ、コンテンツなどの情報を取得して、さまざまな操作を行うことができます。

ポータル サイトにある Web マップの使用

Portal for ArcGIS の Web マップ ID を使用してマップを作成する場合、ArcGIS Maps SDK for JavaScript では、PortalItem クラスを使用します。最初に必要なモジュールをインポートし、Web マップ ID を使って新しい PortalItem インスタンスを作成します。次に、WebMap クラスのインスタンスを作成し、portalItem プロパティに 作成した PortalItem インスタンスを設定します。
Web マップ ID は、詳細ページ URL の最後の値です。例えば、Topographic マップの詳細ページ URL が「https://www.arcgis.com/home/item.html?id=67372ff42cd145319639a99152b15bc3」の場合、Web マップ ID は「67372ff42cd145319639a99152b15bc3」になります。
サンプルコード:
require([
  "esri/portal/PortalItem",
  "esri/WebMap",
  "esri/views/MapView"
], function(PortalItem, WebMap, MapView) {
  // Web マップの ID を変数に格納
  const webMapId = "Web マップの ID";
  
  // WebマップIDを使って新しい PortalItem を作成
  const portalitem = new PortalItem({
    id: webMapId
  });

  // PortalItem から新しい WebMap インスタンスを作成
  const webMap = new WebMap({
    portalItem: portalitem
  });

  // WebMap を使って MapView を作成
  const view = new MapView({
    container: "mapDiv",
    map: webMap
  });
});

ポータル サイトのアイテムを使う際の認証

接続したポータル サイトのアイテム(Web マップなど)を Web アプリケーションで使用する際の認証は、以下のポイントに注意して行います。
  • パブリックなアイテムの場合: パブリックなアイテムは認証を必要としません。アイテムの詳細情報はログインなしでアクセス可能です。
  • 非パブリックなアイテムの場合: ユーザーがログインしている場合、SDK はポータル サイトに対して自動的に認証します。
アクセス権がない場合は、適切な認証情報を提供する必要があります。ポータル サイトへのサイン インは、通常、アプリケーション上でセキュアなアイテムへのアクセスが必要になった際に行われます。Portal クラスの authMode プロパティを使用することで、任意のタイミングでサイン インを求めることもできます。アプリケーションとして求められている挙動に応じて、authMode プロパティを設定します。

Portal.authModeプロパティでサインインのタイミングを指定

  • anonymous : サインインしない。アクセス制限されたコンテンツを使用する際に、エラーが返される。
  • auto : アクセス制限されたコンテンツを使用する際に、サインインダイアログが表示される(デフォルト)
  • immediate : Portal クラスのロード時にサインインする。

サンプルコード:
// Portal のインスタンスを作成
const portalSite = new Portal();
// 認証処理
portalSite.authMode = “immediate”; // ロード時にサインイン
portalSite.load().then(function() { //ロード(サインイン)
    user = portalSite.user; // サインインしたユーザー
    user.fetchItems(params); // 指定したフォルダーのアイテムを取得
});

IdentityManager の利用

ユーザー認証情報を管理するためのヘルパー クラスとして IdentityManager があります 。
セキュアなアイテムにアクセスがあった場合は、IdentityManager クラスを読み込まずとも、アプリケーションとして自動的にサインインダイアログが表示されます。
サイン インステータス(認証状況)の確認や削除、再認証などサイン インに関わる操作が必要な場合には、IdentityManager クラスのインスタンスを作成することで、アプリケーションに入力された認証情報を確認できます。また、IdentityManagerはアプリケーション内でユーザーの認証情報を保存し、再利用できます。これにより、一度ユーザーがサイン インすると、セキュアなサービスに対して繰り返し認証情報を使えるようになります。

ポータル サイトのベースマップ ギャラリーを使用

BasemapGallery で表示されるベース マップは通常、esriConfig.portalUrl に設定されているポータル サイトのベースマップ ギャラリーのものを使用します。あらかじめ、esriConfig.portalUrl に Portal for ArcGIS の URL を指定している場合は、特に操作は必要ありません。 しかしながら esriConfig.portalUrl を設定せず、BasemapGallery で表示されるベース マップのみを Portal for ArcGIS のものを利用する場合は別途 BasemapGallery の source を設定します。
サンプルコード:
// basemapGallery のインスタンスを作成
const basemapGallery = new BasemapGallery({
    view: view,
    source: {
        // Portal for ArcGIS の URL
        portal: "https://<FQDN>/<ArcGIS WebAdaptor 名>";
    }
});

// basemapGallery を MapView に追加
mapView.ui.add(basemapGallery, {
    position: "top-right"
});


メタデータ

種類

製品