3D 區域探索工具:自訂指南

3D 區域探索工具是幫助您探索社群,激發 3D 效果的解決方案。這項解決方案運用了:Google 的擬真成像 3D 圖塊Places SearchPlace DetailsAutocomplete API

開始進行:

啟用

自訂體驗

3D 區域探索工具解決方案提供高度自訂彈性,可讓您根據客戶流程量身打造體驗。您可以使用 UI 的控制台或 config.json 檔案進行自訂。

準備好自訂了嗎?步驟如下:

位置

調整 config.json 檔案中的經緯度,定義體驗起點。

相機控制

選取攝影機的軌道類型 (經典的圓形路徑或引人注目的正弦波) 來掌控旅程。

  • 固定軌道

    這是位於固定高度且圍繞特定搜尋點的圓形軌道。

    您可以探索 Google 雪梨辦公室,瞭解固定的軌道運行情形。

  • 動態軌道

    攝影機會在指定搜尋點周圍,以正弦波軌跡流暢移動。這種獨特的運動方式可讓觀眾從各種高度和角度觀察搜尋點,享有動態且身歷其境的視覺體驗。

    您可以探索艾菲爾塔,瞭解動態軌道的實際運作情形。

搜尋點 (POI):

  • 決定要探索的地點類型,藉此自訂探索。使用 config.json 中的 types 陣列選擇博物館、公園、學校等。
  • 調整 density 參數,即可設定顯示的搜尋點數量上限。
  • 修改 searchRadius (in meters),加入附近隱藏的優質內容,或聚焦特定區域。
  • 使用 speed (in revolutions per minute) 參數,為攝影機動作設定選擇的速度。

預先載入探索資料:透過網址自訂功能深入探索

3D 區域探索工具可讓您利用自訂網址來預先定義探索。這樣就不必手動設定,簡化使用者體驗。

製作完美網址:

只要將特定參數附加至 Area Explorer 網址,即可預先設定位置和其他設定。例如:

https://{base-url}/#location.coordinates.lat=40.7424396&location.coordinates.lng=-74.0061439

這個網址會將起點設為指定的經緯度,立即將您帶到所選位置。可用參數:

  • location.coordinates.lat:所選位置的緯度。
  • location.coordinates.lng:所選位置的經度。
  • poi.types:以逗號分隔的搜尋點類型清單。
  • poi.density:選擇的搜尋點數量上限。
  • poi.searchRadius:搜尋附近搜尋點的半徑。
  • camera.speed:相機軌道速度。
  • camera.orbitType:攝影機軌道類型 (「固定軌道」或「動態軌道」)。

自訂網址的優點:

  • 預先定義所選設定,簡化使用者體驗。
  • 與預先載入的特定地點和搜尋點分享目標歷程。
  • 將預先設定的 Area Explorer 體驗流暢嵌入網站中。

您可以運用網址自訂功能,打造專屬的體驗,並邀請他人一起展開規劃的冒險旅程。

進一步自訂

上一節探討可透過 UI 或設定檔存取的調整項。不過,您還可以修改其他幾個內建參數,進一步自訂應用程式。

如要進行這些進階自訂,您需要查看位於 src 目錄中的 src/utils/cesium.js 檔案程式碼。您可變更下列變數,藉此改變應用程式的外觀和風格

相機高度

調整 CAMERA_HEIGHT 值,控制相機飛行至某個點時的高度。值越大,全景檢視畫面越大,全景圖越近,越精確

// Camera height (in meters) above the target when flying to a point.
const CAMERA_HEIGHT = 100;
  • 設定:CAMERA_HEIGHT
  • 預設值為 100。
  • 說明:定義前往某個點時,攝影機在目標位置上方的高度。
  • 範例值:
    • 50:更近的視角,強調細節。
    • 200:更全景視野。

攝影機提案

攝影機的初始傾斜是由 BASE_PITCH 定義。針對下傾斜的傾斜和正值使用負值表示向上檢視。如要在探索中新增細微的動態動作,請變更 AUTO_ORBIT_PITCH_AMPLITUDE。

// Pitch 30 degrees downwards
const BASE_PITCH = -30;
// change the pitch by 10 degrees over time
const AUTO_ORBIT_PITCH_AMPLITUDE = 10;
  • 設定:BASE_PITCHAUTO_ORBIT_PITCH_AMPLITUDE
  • 預設值:
    • BASE_PITCH:-30 (向下傾斜 30 度)
    • AUTO_ORBIT_PITCH_AMPLITUDE:10 (將傾斜角度的變化 10 度)

說明:攝影機傾斜角度是指地圖的視覺傾斜,以度為單位。也稱為傾斜。這些設定定義了相機在自動旋轉期間的初始音調和動態音調調整。

範例值:

  • BASE_PITCH:0 (等級相機)
  • AUTO_ORBIT_PITCH_AMPLITUDE:0 (沒有音調變化)

相機範圍和縮放

這些參數會設定聚焦特定點時套用的縮放量。數值越小,表示距離越近。

// Distance variation relative to initial range.
const RANGE_AMPLITUDE_RELATIVE = 0.55;

// Determines how much the camera should zoom in or out
const ZOOM_FACTOR = 20;

設定:RANGE_AMPLITUDE_RELATIVEZOOM_FACTOR

預設值:

  • RANGE_AMPLITUDE_RELATIVE:0.55 (相對距離變化)
  • ZOOM_FACTOR:20 (攝影機變焦係數)

說明:這些設定定義相機移動時的範圍變化,以及縮放比例以更清楚地顯示。

範例值:

  • RANGE_AMPLITUDE_RELATIVE:1 (完整範圍變化)
  • ZOOM_FACTOR:10 (較少縮放)
// Camera heading (rotation), pitch (tilt), and range (distance) for resetting view.
const CAMERA_OFFSET = {
  heading: 0, // No rotation offset.
  pitch: Cesium.Math.toRadians(BASE_PITCH),
  range: 800, // 800 meters from the center.
};

重設攝影機

如果使用者想將攝影機重設為原始位置,系統會使用 CAMERA_OFFSET 值。這項設定包括方向 (旋轉)、俯仰 (傾斜) 和範圍 (相機與中心之間的距離)。

  • 設定:CAMERA_OFFSET
  • 預設值:
    • heading:0 (無旋轉偏移)
    • pitch:Cesium.Math.toRadians(-30) (向下傾斜 30 度)
    • range:800 (距離中心點 800 公尺)
  • 說明:定義用於重設檢視畫面的攝影機方向、音調和範圍。
  • 範例值:
    • heading:45 (度數,西北角)
    • range:1500 公尺 (距離中心距離)

起始座標:

START_COORDINATES 會定義相機的初始經度、緯度和高度。從這裡開始探索,因此請設為您希望使用者最先看到的區域。

// Default camera start position in longitude, latitude, and altitude.
const START_COORDINATES = {
  longitude: 0,
  latitude: 60,
  height: 15000000, // 15,000 km above the surface
};
  • 設定:START_COORDINATES
  • 預設值:

    • longitude:0
    • latitude:60
    • height:15000000 (距離地面 15,000 公里)
  • 範例值:

    • longitude:-122.4934,latitude:37.7951 (金門大橋)
    • height:2000 (接近起始位置)

載入預先定義的位置

config.json 中的 location 物件會設定區域中心。這是相機在 Cesium 檢視器中的初始視角。coordinates:定義攝影機優先平移位置的緯度 (lat) 和經度 (lng)。調整這些值,將攝影機設為地球上的任何特定位置。

  {
  "location": {
    "coordinates": { "lat": null, "lng": null }
  },

這項設定可讓您啟動 3D Place Navigator 應用程式,放大至您選擇的特定位置。您可以使用 Google 的地理編碼工具,取得地址或地點名稱的經緯度座標,方法是在位置物件中指定:

  1. 使用地理編碼工具
  2. 建立地理編碼要求:按一下「試用自己」部分,然後在「地址」欄位中輸入所選地點。您可以指定地址、地點名稱,甚至是地標。
  3. 產生座標:按一下「Run」(執行) 按鈕以提交要求。這項工具會傳回含有該地點各種相關資訊的回應,包括 geometry.location 部分下方顯示的經緯度座標。
  4. 使用地理編碼:從回應複製擷取的經緯度值,並貼到設定內的 coordinates 物件中。

注意:以這種方式使用的地理編碼必須遵循 Google 地圖平台《服務條款》第 3.4 節所述的條款,且不得快取超過 30 天,之後必須重新整理。

圖片

這項設定會使用地理編碼工具,自動判斷 Google 位於美國加州山景市的總部座標,然後啟動 3D Place Navigator 應用程式,並將攝影機中心設在該位置。

進階自訂

您可以透過深入瞭解程式碼,進一步自訂上述項目。下一節將逐步說明幾個選項

新增攝影機路徑

這個解決方案立即會實作兩個不同的相機路徑:

fixed-orbit" | "dynamic-orbit"

不過,如果您想建立新的鏡頭路徑,可以使用

calculateAutoOrbitFrame 函式中的 /src/utils/cesium.js

如要在設定面板中使用這項新路徑計算,請參閱 demo/src/camera-settings.js. 中的實作方式

新增更多地點類型

您可以在 demo/src/place-settings.js 檔案中調整設定的地點類型清單。從第 4 行開始是示範中可用的地點類型。

如果想使用特定地點類型,而不變更示範來源,可以將這些項目新增至 poi.types 下的 config.json 檔案。

自訂樣式 (css)

我們使用 CSS 變數所處理的樣式每個主要瀏覽器都支援這些屬性,因此您可以集中變更一行程式碼,並更新特定 CSS 屬性。CSS 變數是在 src/main.css. 中定義,您可以調整整個應用程式的顏色、字型設定和邊框間距或邊界。

疊加其他資料

如要疊加其他資料,您必須更新 src/utils/cesium.js 檔案,並參閱 cesium 說明文件,瞭解如何將 GeoJSON 或其他地理參照資料新增至地球。

移除設定區段

JavaScript 應用程式的設定檔包含三個主要區段:demo/src/[config-panel.js](config-panel.js): locationpoicamera。這些各節分別針對應用程式的各個方面提供設定選項。開發人員可根據自身特定需求 自訂這些專區

1.從設定中移除特定部分

  • 位置部分

如要移除 location 區段,請在程式碼中找出下列程式碼,並加上註解或刪除該區段:

const locationConfig = { ...config.location, ...customConfig.location };
  • 搜尋點區域

如要移除 poi 區段,請在程式碼中找出下列程式碼,並加上註解或刪除:

const poiConfig = { ...config.poi, ...customConfig.poi };
  • 相機部分

如要移除 camera 區段,請在程式碼中找出下列程式碼,並加上註解或刪除:

const cameraConfig = { ...config.camera, ...customConfig.camera };

2. 更新合併設定

移除一個區段後,請務必更新合併的設定物件。這個物件會將預設設定與任何自訂項目合併。從 combinedConfig 物件中移除對應的屬性:

const combinedConfig = {
 location: { ...config.location, ...customConfig.location }, // Remove if location section is removed

 poi: { ...config.poi, ...customConfig.poi }, // Remove if poi section is removed
 camera: { ...config.camera, ...customConfig.camera }, // Remove if camera section is removed
};

3. 調整 UI 元素

如果移除區段也意味著會移除相關的 UI 元素,請按照 HTML 程式碼中的指示更新程式碼。舉例來說,如果您想要從管理控制台移除特定區段 (例如相機速度),就必須同時更新該部分的 js 和 HTML 程式碼。

4. 移除攝影機設定區段

如要從 UI 中移除相機設定區段,請找到下列程式碼,並加上註解或刪除:

const cameraSettingsSecgetCameraSettingsSection(cameraConfig);

移除位置版面摘要

const locationSection = await getLocationSettingsSection(locationConfig);

結論

在本文件中,我們探索了區域探索工具提供的各種自訂選項,以打造您的 3D 探索體驗。藉由修改相機行為、調整視覺傾斜和變更縮放等級,您可以打造引人入勝的獨特體驗,展示選定的設定和搜尋點。

請記得嘗試不同設定,並根據您的特定需求微調參數。只要善用這項強大的自訂功能,您就能打造身歷其境的個人化歷程,藉此吸引目標對象並實現您的願景。