Цезий: переместите камеру, чтобы увидеть объект, если он не виден - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу убедиться, что объект всегда виден, но он не обязательно должен быть в центре представления (поэтому я не мог использовать trackedEntity). Другими словами - пусть объект перемещается (это SampledPositionProperty) в текущем представлении, пусть пользователь масштабирует и перемещает представление так, как он будет sh, но если объект удаляется от представления (или пользователь перемещает представление) от объекта), затем центрируйте вид вокруг объекта один раз.

В API Карт Google это тривиально:

if (!map.getBounds().contains(latLng)) {
  map.setCenter(latLng);
}

Мне не удалось найти аналогичный API в Cesium, и я думаю, что я, должно быть, упускаю что-то очевидное. Я пробовал Entity.isShowing, но его не волнует вид с камеры.

1 Ответ

0 голосов
/ 01 мая 2020

Это на самом деле довольно просто. Что меня смутило, так это использование разных объектов (Cartesian3 или Cartographic) в разных функциях. Это мой код:

// lat, lng, height defined
const cartographic = Cesium.Cartographic.fromDegrees(lng, lat, height);
if (!Cesium.Rectangle.contains(map.camera.computeViewRectangle(), cartographic)) {
  const destination = Cesium.Cartesian3.fromDegrees(lng, lat, height);
  map.camera.flyTo({destination, duration: .5});
}
...