
次世代 Web API となる ArcGIS API 4.0 for JavaScript。ベータ版の公開に合わせて最新情報をシリーズ記事としていち早くご紹介しています。前回は API の刷新におけるもっとも重要な変更である Map と View についてご説明しました。第 3 弾となる今回はシンプルになったプロパティ アクセスについてご紹介します。
プロパティ アクセス
これまでプロパティの値を取得したり設定したりするためにはクラスやプロパティごとに異なる方法を用いており、リファレンスなどを参考にする必要がありました。4.0 ではプロパティの取得、設定、監視が一元化し、クラスに何のプロパティがあるのかを知っているだけで、プロパティの操作が容易に行えるようになります。
get メソッドと set メソッド
get はプロパティの値を取得するための、set はプロパティの値を設定するためのメソッドです。
クラスやオブジェクトによっては特定のメソッドを使わないとプロパティの値を取得したり設定したりできませんでしたが、get メソッドと set メソッドの導入により、すべてのクラスにおいてプロパティの取得、設定方法が統一されました。
var map = new Map({
basemap: "oceans"
});
var view = new SceneView();
// set メソッドを使いプロパティの値を設定
var viewProperties = {
container: "viewDiv",
map: map,
center: [139.692, 35.690],
zoom: 3
};
view.set(viewProperties);
// get メソッドを使いプロパティの値を取得
var basemapTitle = map.get("basemap.title");
var centerInfo = view.get("center");
var zoominfo = view.get("zoom");
console.log("basemap: ", basemapTitle, //海洋図
"\ncenter: ", centerInfo, //[139.692, 35.690]
"\nzoom level: ", zoominfo); //3
watch メソッド
プロパティの監視方法も変わります。4.0 以前ではプロパティの変化を監視するにはイベントに紐付けるしかありませんでした。また、返ってくる値もイベントごとに異なっていました。
4.0 に追加された watch メソッドはプロパティを監視対象とし、監視対象のプロパティの値が変化するたびにコールバック関数を実行します。watch メソッドはネストされたプロパティも監視対象にすることができるので、これまで監視することができなかったプロパティも対象とすることができます。
4.0 以前
var map = new Map({
basemap: "sattelite"
});
//ベースマップが変化すると発生するイベントを通してプロパティを監視
map.on("basemap-change", function(evt){
console.log("現在のベースマップ オブジェクト: ", evt.current,
"\n以前のベースマップ オブジェクト: ", evt.previous);
});
4.0
var map = new Map({
basemap: "sattelite"
});
//プロパティ(‘basemap.title’)の値が変化するたびにコールバック関数が実行される
map.watch("basemap.title", function(newValue, oldValue, property, object){
console.log("New value: ", newValue, //プロパティの新しい値
"Old value: ", oldValue, //変化前のプロパティの値
"Watched property: ", property, //監視対象のプロパティ
"Watched object: ", object); //監視対象のオブジェクト
});
ベースマップを衛星画像から地形図に変更したとき、開発者ツールのコンソール パネルには以下の情報が表示されます。
New value: 地形図 Old value: 衛星画像 Watched property: basemap.title Watched object: マップ オブジェクト |

プロパティ アクセス
https://esrijapan.github.io/arcgis-samples-4.0-js/beta/beta1/properties/index.html
プロパティへのアクセス方法が一元化したことにより、どのようなプロパティがあるのかを知っていれば get メソッドで値を取得したり、set メソッドで値を設定したりすることが簡単にできるようになります。また、プロパティを監視する watch メソッドも追加され、イベントに紐付けることなくどのようなプロパティでも監視対象にすることが可能になりました。
次回はこの watch メソッドについてさらに詳しくご紹介していく予定です。