public void CreateLocalTerrainFromBookmark(string bookmarkJson)
        {
            Bookmark               bookmark            = JsonConvert.DeserializeObject <Bookmark>(bookmarkJson, JsonConfig.SerializerSettings);
            BoundingBox            bbox                = BoundingBoxUtils.ParseBoundingBox(bookmark.BoundingBox);
            TerrainProductMetadata baseProductMetadata = new TerrainProductMetadata(bookmark.TexturesUUID[0], bbox, 0);
            // TODO Add additional product layers if present.

            TerrainModelManager terrainModelManager = TerrainModelManager.Instance;
            LocalTerrainModel   terrainModel        = terrainModelManager.CreateLocalModelFromBookmark(bbox, bookmark.DemUUID, bookmark.TexturesUUID);

            terrainModelManager.ShowTerrainModel(terrainModel);
        }
        public void NavigateToCoordinate(string bbox)
        {
            TerrainModelManager        terrainModelManager = TerrainModelManager.Instance;
            XRInteractableGlobeTerrain globe = (XRInteractableGlobeTerrain)terrainModelManager.GlobeModel.InteractionController;

            if (globe)
            {
                BoundingBox boundingBox = BoundingBoxUtils.ParseBoundingBox(bbox);
                Vector2     latLon      = BoundingBoxUtils.MedianLatLon(boundingBox);
                Camera      eye         = UserInterfaceManager.Instance.XRCamera;
                globe.NavigateTo(latLon, eye.transform.position);
            }
        }
        public void HighlightBoundingBoxOnGlobe(string bbox)
        {
            TerrainModelManager terrainModelManager = TerrainModelManager.Instance;

            if (string.IsNullOrEmpty(bbox))
            {
                terrainModelManager.ClearHighlightedAreaOnGlobe();
            }
            else
            {
                BoundingBox boundingBox = BoundingBoxUtils.ParseBoundingBox(bbox);
                terrainModelManager.HighlightAreaOnGlobe(boundingBox);
            }
        }