Comment définir les coordonnées sur lesquelles Cesium.Viewer est centré?

10

Dans le tutoriel officiel CesiumJS, il y a un exemple d' HelloWorldapplication, qui montre une visionneuse de carte.

Lorsque l'utilisateur ouvre la page, je veux que le globe soit centré au-dessus d'un certain point et avec un certain zoom:

Capture d'écran

Comment puis-je atteindre cet objectif?

J'ai supposé qu'il peut être configuré via Cesium.Viewerles paramètres du constructeur (comme timelineci-dessous), mais je ne les ai pas trouvés dans la référence .

<body>
  <div id="cesiumContainer"></div>
  <script>
    var viewer = new Cesium.Viewer('cesiumContainer', 
      {
        timeline: false,
        animation: false
      });
  </script>
</body>
</html>
Dmitrii Pisarenko
la source

Réponses:

5

Vous pouvez définir la vue de la caméra "par défaut" avant de construire le widget Viewer, qui est utilisée à la fois pour la vue initiale et pour la vue du bouton "Accueil". Définissez cela en utilisant les propriétés statiques DEFAULT_VIEW_FACTOR et DEFAULT_VIEW_RECTANGLE sur la classe Camera ( document de référence ), comme ceci:

var west = 122.0;
var south = 33.0;
var east = 130.0;
var north = 47.0;

var rectangle = Cesium.Rectangle.fromDegrees(west, south, east, north);

Cesium.Camera.DEFAULT_VIEW_FACTOR = 0;
Cesium.Camera.DEFAULT_VIEW_RECTANGLE = rectangle;

// NOTE: Viewer constructed after default view is set.
var viewer = new Cesium.Viewer('cesiumContainer');

Notez également que la démonstration de la caméra Sandcastle montre un certain nombre de façons de piloter ou d'aligner la caméra sur des emplacements lors de l'exécution, après la construction. Utilisez le sélecteur de liste déroulante (en haut à gauche du globe) pour voir les différentes options.

emackey
la source
7

Si vous avez déjà créé une visionneuse, vous pouvez mettre ce code après la création de cette visionneuse, pour créer un zoom sur une longitude, une latitude spécifique.

var center = Cesium.Cartesian3.fromDegrees(-82.5, 35.3);
viewer.camera.lookAt(center, new Cesium.Cartesian3(0.0, 0.0, 4200000.0));

Et si vous définissez le 3ème terme dans la 2ème ligne, 32500000.0vous serez plus loin, similaire à l'effet du bouton d'accueil. Essayez donc de faire varier ce 3e terme pour obtenir le zoom souhaité.

Cutlasj
la source
Cela semble déranger la souris pour moi de sorte que le panoramique déplace le globe autour du nouveau point centré.
Richard