ArcGIS API for JavaScript 4.2学習ノート[8]2 Dと3 Dビューの同期

2718 ワード

同じデータの異なるビューでは、3 Dビューが大きくなると2 D地図と差が少なく、歪みが小さく、超大範囲の地図表示に役立つため、平面地図上で分析、照会、操作を行うことが多い.教育の必要性はこれに対して要求があるかもしれませんか?
本文は2つの比較的複雑な関数を深く研究していないで、いつか読めることを望んで、このような同じMapオブジェクトの異なるビューの同期表示に対して、直接copyの後半の内容を提案します.
 
タカの目の機能はこれと似ていますが、タカの目の機能(つまり前の文章)はwatch()とwatchUtilsを利用しています.when()が実現する同期、この例はまたどんな違いがありますか?探究する.
結果図を直接見ます.
2つの縁のないDIVのように見え、幅はそれぞれ50%を占めています.
実際に操作した結果、いずれかのビューでドラッグ、ズーム、回転ビューを行い、もう一方も変化し、ほとんど拡大版の鷹の目であり、鷹の目の別の書き方とも言える.
 
requireの参照を指定します.
require(
    [
      "esri/Map",
      "esri/views/MapView",
      "esri/views/SceneView",
      "esri/core/watchUtils",
      "dojo/domReady!"
    ],
     function(Map,MapView, SceneView,watchUtils){
          //      
     }
);

うん?またwatchUtils?傍受と関係があるようだ.
//実際、この例ではwatchリスニングとwatchUtilsリスニングで同期していますが、コードが理解しにくく、綿密に検討していません.
中堅部分を見る:
function(Map,MapView,SceneView,watchUtils){
    var map = new Map({});
    var view1 = new SceneView({});
    var view2 = new MapView({});
    
    var synchronizeView = function(view, others){};
    var synchronizeViews = function(views){};
    synchronizeViews([view1,view2]);
}

地図を1枚インスタンス化し、2つのビューをインスタンス化するのは、前の例とは異なるようです.
これに対し、ブロガーは元のコードを一時的に保持することを示した.
synchronizeViewは60行に及ぶので、この方法はきっと普通ではありません.
ブロガーのアドバイスは次のとおりです.
同じ下図の2 Dと3 Dビューを同期して表示する必要がある場合は、この2つのsynメソッドcopyを直接来て、1つのメソッドにパッケージしてもいいです.入力パラメータは2つのviewでいいです.
興味のある学生はこのクラスを調べることができます:esri/core/Collection
この2つの理解しにくい方法の中で、map()方法、slice()方法、concat()方法などのいくつかの方法が使用されています.