建物の 3D ビューアを開発しました。私が今追加しようとしているのは、建物エンティティの下にある WMS (Web マップ サービス) のコンテンツの選択です。
基本的には、ユーザーが左クリックした位置にある建物を選択できるようにしたいと考えています。建物の色が変わるはずです(うまくいきます)。そして、ユーザーがクリックした位置の Web マップ サービスの情報を取得したいと考えています。
これは私がこれまでにコーディングしたものです:
var pickColor = Cesium.Color.CYAN.withAlpha(0.7);
var selectedEntity = new Map();
handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click) {
var pickedObject = viewer.scene.pick(click.position);
if (Cesium.defined(pickedObject)) {
var entityId = pickedObject.id._id;
var oldColor = buildingMap.get(entityId).polygon.material.color;
buildingMap.get(entityId).polygon.material.color = pickColor;
selectedEntity.set(entityId, oldColor);
var currentLayer = viewer.scene.imageryLayers.get(1);
if (typeof currentLayer !== 'undefined') {
var info = currentLayer._imageryProvider._tileProvider.getTileCredits(click.position.x, click.position.y, 0);
}
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
ただし、変数「info」は未定義のままですが、配列を返すと予想されます。