我們加載一個(gè)3DTileset?到地圖里面了,怎樣獲取這個(gè)3DTileset?對(duì)象下面的feature呢。比如獲取某個(gè)房屋的構(gòu)件“窗子”
1,通過(guò)點(diǎn)擊事件獲取
viewer.screenSpaceEventHandler.setInputAction(function?onLeftClick(
????????movement
??????)?{
????????var?pickedFeature=?viewer.scene.pick(movement.position);
},
??????Cesium.ScreenSpaceEventType.LEFT_CLICK);
2,通過(guò)對(duì)3DTileset?對(duì)象添加監(jiān)聽(tīng)和回調(diào)函數(shù)獲取
function processContentFeatures(content, callback) {
? var featuresLength = content.featuresLength;
? for (var i = 0; i < featuresLength; ++i) {
? ? var feature = content.getFeature(i);
? ? callback(feature);
? }
}
function processTileFeatures(tile, callback) {
? var content = tile.content;
? var innerContents = content.innerContents;
? if (Cesium.defined(innerContents)) {
? ? var length = innerContents.length;
? ? for (var i = 0; i < length; ++i) {
? ? ? processContentFeatures(innerContents[i], callback);
? ? }
? } else {
? ? processContentFeatures(content, callback);
? }
}
tileset.tileLoad.addEventListener(function (tile) {
? processTileFeatures(tile, function(data){
console.log(data)
});
});
tileset.tileUnload.addEventListener(function (tile) {
? processTileFeatures(tile, unloadFeature);
});
3,通過(guò)tileset?tileVisible監(jiān)聽(tīng)獲取?feature
? ? ?tileset.tileVisible.addEventListener(function(tile) {?
? ? ?var content = tile.content;
? ? ? ?var featuresLength = content.featuresLength;?
? ? ? for (var i = 0; i < featuresLength; i++) {?
? ? ? ? let??feature =content.getFeature(i)
? ? ? }? ?
?});
4,通過(guò) _selectedTiles對(duì)象獲取被選中的featrue
var tiles=tileset._selectedTiles
for(let i=0;i<tiles.length;i++){
let tile = tiles[i];
var content = tile.content;
var featuresLength = content.featuresLength;
for (var j = 0; j < featuresLength; j++) {
let feature =content.getFeature(j) console.log( feature)
} }
5,從Cesium3DTileFeature里獲取Cesium3DTileset?
pickedFeature.tileset