Suite

Interactions dans OpenLayers 3 - Césium ?

Interactions dans OpenLayers 3 - Césium ?


J'ai parcouru les exemples oL3-Césium fournis sur leur site Web. Il y avait un exemple ici qui consistait à sélectionner les entités dans la vue 2D et la même chose sera également reflétée dans la vue 3D. Mais, lorsque j'ai parcouru le code, aucune interaction n'a été définie en tant que telle. Ils extrayaient la caractéristique présente sur la coordonnée en surbrillance/cliquée, le cas échéant, et appliquaient des styles.

Ce que je veux dire, c'est qu'il n'y avait pas d'interaction prédéfinie pour la sélection, comme c'est le cas dans la documentation OL3 ici. Je voulais donc demander s'il n'y a actuellement pas d'interactions prédéfinies dans cette intégration OL3-Cesium ou est-ce que je rate quelque chose ? J'ai principalement suivi les exemples fournis sur leur site Web pour comprendre le fonctionnement.

Mettre à jour :

Dans l'exemple que j'ai fourni ci-dessus, ils ont extrait l'entité, le cas échéant, présente à la coordonnée cliquée. Cela se reflète également dans la vue 3D. Mais quand j'essaie d'ajouter l'interaction select d'Ol3 dans ceci :

var selectClick = new ol.interaction.Select({condition : ol.events.condition.click}); sélectionnez = sélectionnezCliquez ; if (select !== null) { map.addInteraction(select); select.on('select', function(e) { select.setStyle(selectionstyle); }); }

Les entités en 2D sont bien sélectionnées, mais elles ne se reflètent pas dans la vue 3D. Alors, ces interactions ne sont-elles pas encore prises en charge dans Ol3-Cesium ou je me trompe ?


Si vous regardez la source selection.js de l'exemple que vous avez lié, vous verrez ces lignes :

var ol3d = new olcs.OLCesium({map: map, target: 'map3d'}); var scène = ol3d.getCesiumScene(); ol3d.setEnabled(true);

Cela établit le lien entre la carte OpenLayers et la vue Cesium, et non le contrôle d'interaction, qui traite uniquement des événements dans la vue cartographique OpenLayers. Voici le code source du césium correspondant. Dans ce code, vous verrez que la liaison se fait via deux autres modules, RasterSynchronized et VectorSynchronizer.

Les commentaires en haut de ces deux fichiers indiquent clairement que l'interaction n'est que d'OpenLayers vers Caesium, par exemple,

Synchronisez de manière unidirectionnelle les couches vectorielles OpenLayers avec le césium.

Le ol.interaction.Select qui vient plus tard traite entièrement de la mise à jour des styles sur la vue cartographique OpenLayers, il n'est en aucun cas lié à l'interaction avec Caesium.


Voir la vidéo: Openlayers 2 Map Application