<\/P>
Ce sample développeur démontre comment interagir avec un bâtiment à plusieurs niveaux en trois dimensions en utilisant Esri<\/A> et l'ArcGIS API for JavaScript<\/A> version 4.3. Avec une simple opération de clic\/tap et glisser, un bâtiment peut être repositionné de manière intuitive et fluide sur la surface de la Terre. Notez que chaque étage est un graphique séparé mais est traité comme une entité unique lorsqu'il est manipulé.<\/P><\/P>Cliquez ici <\/A>pour l'application en direct.<\/P>Cliquez ici <\/A>pour le code source.<\/P><\/P>Il est important de noter que le sample utilise quelques appels API non documentés pour obtenir ce comportement. En tant que tel, nous déconseillons d'utiliser ces appels dans un environnement de production car ils ne sont pas supportés et changeront très probablement dans un avenir proche.<\/P><\/P>Le code<\/A> peut sembler excessivement ou inutilement compliqué, voici un résumé de ce que fait le code :<\/P>Construction du bâtiment<\/STRONG>Pour des raisons de portabilité, les étages du bâtiment sont construits à partir d'un ensemble de valeurs codées en dur. Il est important de noter que chaque étage est un graphique individuel attribué avec un identifiant de bâtiment. Cet identifiant est utilisé pour regrouper tous les étages adjacents pour la mise en surbrillance et la translation spatiale.<\/LI>Glisser<\/STRONG>Le code utilise l'événement drag <\/A> de SceneView pour répondre aux trois phases d'une opération de glisser du pointeur, à savoir démarrage<\/EM>, mise à jour<\/EM> et fin<\/EM>. Pendant la phase "démarrage", un hittest <\/A>est effectué pour identifier l'étage du bâtiment (le cas échéant) sous le pointeur. Si un étage est trouvé, les étages adjacents sont identifiés et mis en surbrillance. Dans la phase "mise à jour", deux méthodes non documentées SceneView._stage.pick<\/EM> et SceneView.<\/_computeMapPointFromIntersectionResult<\/EM> sont utilisées pour suivre le déplacement du pointeur en coordonnées réelles. Ces méthodes renvoient directement la position sur la carte sous <\/_span>le pointeur, ignorant les entités et graphiques.<\/_span><\/_span><\/_span><\/_LI>Désactivation/Activation de l'interaction du pointeur<\/_STRONG>Lorsqu'un bâtiment est déplacé vers un nouvel emplacement, il est nécessaire de désactiver l'interaction avec la carte afin que celle-ci ne se déplace pas. Pour cela, nous avons utilisé une autre méthode non documentée, SceneView.inputManager<\/_EM>, pour ajouter puis restaurer les gestionnaires.<\/_LI>Mouvement<\/_STRONG>À l'heure actuelle, il n'est pas possible de mettre à jour la géométrie d'un graphique existant. Pour montrer un graphique en mouvement, il doit être supprimé puis réajouté. Cela peut sembler quelque peu fastidieux mais l'impact sur les performances est négligeable.<\/_LI>Régulation<\/_STRONG>Il est probable que la fréquence des événements drag dépasse le taux de rafraîchissement de l'affichage. Si l'affichage fonctionne à 60 images par seconde (ou mieux), les événements drag excessifs sont ignorés.<\/_LI><\/_UL><\/_P>Encore une fois, je tiens à souligner qu'il s'agit d'un sample développeur spécifiquement pour la version 4.3 de l'Esri JavaScript API. Il est très probable qu'une partie du code utilisé dans cette application soit obsolète ou redondante (ou les deux) dans les futures versions.<\/_P><\/_P>Remerciements particuliers à Johannes Schmid<\/_A> pour son expertise technique !<\/_P><\/_BODY><\/_HTML>
Cliquez
Il est important de noter que le sample utilise quelques appels API non documentés pour obtenir ce comportement. En tant que tel, nous déconseillons d'utiliser ces appels dans un environnement de production car ils ne sont pas supportés et changeront très probablement dans un avenir proche.<\/P>
Le
Vir Naidoo, I admire your curiosity and enthusiasm but I think that taking advantage of Esri's online training material might be a more effective way of gaining the necessary knowledge. On Esri's training page there are more than 30 JavaScript related courses most of which are either free or complimentary with a current maintenance subscription. For more information please contact your local Esri distributor.
and Richie Carmichael ,
Here is an another question, I have used your code,but the result is not right. the graphic.attributes.only have an OBJECTID attribute, did not include name or other.
So , how do you think to solve this??
thanks advance.
Hi Richie Carmichael ,
First, I am very grateful for your help , and this time i want to know is the graphic.attributes.name, where did it from ?
is it from the attributes table i have add it in my attributes table??
Vir Naidoo, to display the name of a clicked building you could do something like this:
_view.on("click", function (e) {
// Stop propagation.
e.stopPropagation();
// Perform hittest to get clicked building (if any).
_view.hitTest(e.screenPoint).then(function (p) {
if (!p || !p.results || p.results.length === 0) { return; }
var graphic = p.results[0].graphic;
if (!graphic) { return; }
// Popup name of clicked building.
alert(graphic.attributes.name);
});
I want to know if three is any way to achieve using click event in sceneView to find which building i have clicked? If so, how to achieve it,please show me the detail,thanks advance.
Vir Naidoo, click here to learn how to define a scene layer definition expression.
Hi Richie Carmichael ,
What you said is important to me , but how can i hide the building with definition query?
Do you have any demo that i can learn to??
thank you advance.
Hi Naidoo, no it is not possible to edit or move single features in a SceneLayer. But having said that I have seen one of my colleagues demonstrate a simulated editing workflow. When a user clicks on a building (from the SceneLayer) create a new graphic using the building's cloned geometry. Hide the clicked building using a definition query on the SceneLayer. Use the logic described in this post to translate the cloned building. Hope this helps!
I' d like to know could i use my buildings in sceneLayer to achieve this function???
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.