室內地圖的建立工具
注意
Azure 地圖服務 Creator 淘汰
Azure 地圖服務 Creator 室內地圖服務現在已被取代,且將於 2025/9/30 淘汰。 如需詳細資訊,請參閱 Azure 地圖服務 Creator 的生命周期結束公告。
本文介紹適用於 Azure 地圖服務建立工具的概念和工具。 建議您先閱讀這篇文章,再開始使用 Azure 地圖服務建立工具 API 和 SDK。
您可以使用建立工具,搭配以室內地圖資料為基礎的地圖功能來開發應用程式。 本文說明上傳、轉換、建立和使用地圖資料的流程。 通常,工作流程是由兩個不同的角色完成,各具有不同的專業知識和責任領域:
- 地圖製作者:負責策劃和準備地圖資料。
- Creator 地圖資料使用者:使用應用程式中的客戶地圖資料。
下圖說明整個工作流程。
建立 Azure 地圖服務建立工具
若要使用建立工具服務,必須建立 Azure 地圖服務建立工具資源,並與具有第 2 代定價層的 Azure 地圖服務帳戶相關聯。 如需如何在 Azure 中建立 Azure 地圖服務建立工具資源的詳細資訊,請參閱管理 Azure 地圖服務建立工具。
提示
如需定價資訊,請參閱 Azure 地圖服務定價中的建立工具一節。
建立工具驗證
建立工具會繼承 Azure 地圖服務存取控制 (IAM) 設定。 所有用於資料存取的 API 呼叫都必須透過驗證和授權規則傳送。
建立工具使用量資料會併入您的 Azure 地圖服務使用量圖表和活動記錄中。 如需詳細資訊,請參閱管理 Azure 地圖服務中的驗證。
重要
建議您使用:
使用 Creator 服務搭配 Azure 地圖服務帳戶所建置的所有解決方案中的 Microsoft Entra ID。 如需 Microsoft Entra ID 的詳細資訊,請參閱 Microsoft Entra 驗證。
角色型存取控制設定。 使用這些設定,地圖製作者可以做為 Azure 地圖服務資料參與者角色,而建立工具地圖資料使用者可以做為 Azure 地圖服務資料讀者角色。 如需詳細資訊,請參閱具有角色型存取控制的授權。
建立工具資料項目類型
建立工具服務會建立、儲存和使用下列各節中所定義並討論的各種資料類型。 建立工具資料項目可以屬於下列其中一種類型:
- 已轉換的資料
- 資料集
- 地圖底圖集
- style
- 地圖設定
- 路線集
上傳繪圖套件
Creator 會藉由轉換上傳的繪圖套件來收集室內地圖資料。 繪圖套件代表已結構化或重新塑造的設施。 如需繪圖套件需求的相關資訊,請參閱繪圖套件需求。
請遵循如何建立資料登錄一文所述的步驟,將繪圖套件上傳至您的 Azure 儲存體帳戶,然後在 Azure 地圖服務帳戶中註冊。
重要
請務必記下唯一識別碼 (udid
) 值,之後的作業需要用到這個值。 需要 udid
才能將上傳的套件轉換為室內地圖資料。
轉換繪圖套件
轉換服務會將上傳的繪圖套件轉換成室內地圖資料。 轉換服務也會驗證套件。 驗證問題會分類為兩種類型:
- 錯誤:如果偵測到任何錯誤,轉換流程會失敗。 發生錯誤時,轉換服務會提供 Azure 地圖服務繪圖錯誤視覺化檢視獨立 Web 應用程式的連結。 您可以使用繪圖錯誤視覺化檢視,檢查在轉換流程期間發生的繪圖套件警告和錯誤。 在修正錯誤之後,您可以嘗試上傳並轉換套件。
- 警告:如果偵測到任何警告,則轉換成功。 不過,建議您檢閱並解決所有警告。 出現警告時,表示已忽略或自動修正轉換的一部分。 若無法解決警告,可能會導致後續的流程發生錯誤。 如需詳細資訊,請參閱繪圖套件警告和錯誤。
建立室內地圖資料
Azure 地圖服務建立工具提供下列支援地圖建立的服務:
- 資料集服務。
- 地圖底圖集服務。 使用地圖底圖集服務來建立資料集的向量型標記法。 應用程式可以使用地圖底圖集,呈現以視覺效果地圖底圖為基礎的資料集檢視。
- 自訂樣式服務。 使用樣式服務或視覺樣式編輯器來自訂室內地圖的視覺元素。
- Wayfinding 服務。 使用 wayfinding API 來產生設施內兩點之間的路徑。 使用路線集 API 來建立 wayfinding 服務產生路徑所需的資料。
資料集
資料集是室內地圖功能的集合。 室內地圖功能代表轉換的繪圖套件中定義的設施。 使用資料集服務建立資料集之後,您可以建立任意數目的圖格集。
開發人員隨時都可以使用資料集服務新增或移除現有資料集的設施。 如需如何使用 API 更新現有資料集的詳細資訊,請參閱資料集服務中的附加選項。 如需如何更新資料集的範例,請參閱資料維護。
地圖底圖集
地圖底圖集是向量資料的集合,代表一組統一的方格地圖底圖。 開發人員可以使用地圖底圖集服務,從資料集建立地圖底圖集。
若要反映不同的內容階段,您可以從相同的資料集建立多個地圖底圖集。 例如,您可以使用傢俱和設備來建立一個地圖底圖集,並建立另一個沒有傢俱和設備的地圖底圖集。 您可以選擇使用最新的資料更新產生一個地圖底圖集,並產生另一個並非使用最新資料更新的地圖底圖集。
除了向量資料以外,地圖底圖集還提供地圖轉譯最佳化的中繼資料。 例如,地圖底圖集中繼資料包含地圖底圖集的最小和最大縮放層級。 中繼資料也會提供一個定義地圖底圖集地理範圍的周框方塊。 應用程式可以使用周框方塊,以程式設計方式設定正確的中心點。 如需有關地圖底圖集中繼資料的詳細資訊,請參閱地圖底圖集清單。
建立地圖底圖集之後,就可以使用 Render 服務擷取。
如果地圖底圖集已過時且不再有用,您可以刪除該地圖底圖集。 如需如何刪除地圖底圖集的相關資訊,請參閱資料維護。
注意
地圖底圖集並不依賴其建立來源的資料集。 如果您從資料集建立地圖底圖集,接著更新該資料集,則系統不會更新地圖底圖集。
若要反映資料集中的變更,您必須建立新的地圖底圖集。 同樣地,如果您刪除地圖底圖集,資料集不會受到影響。
自訂樣式 (預覽)
樣式會定義地圖的視覺外觀。 它會定義要繪製的資料、繪製資料的順序,以及如何在繪製資料時設定其樣式。 Azure 地圖服務 Creator 樣式支援樣式圖層和原件的MapLibre 標準。
當您將繪圖套件上傳至您的 Azure 地圖服務帳戶,隨後轉換繪圖套件時,預設樣式會套用至地圖的元素。 自訂樣式服務可讓您自訂地圖的視覺外觀。 若要執行此作業,您可以使用樣式 - 建立 HTTP 要求來手動編輯樣式 JSON 並匯入 Azure 地圖服務帳戶,但建議方法是使用視覺樣式編輯器。 如需詳細資訊,請參閱建立室內地圖的自訂樣式。
style.json 檔案中的範例圖層:
{
"id": "indoor_unit_gym_label",
"type": "symbol",
"filter": ["all", ["has","floor0"], ["any", ["==", "categoryName", "room.gym"]]],
"layout": {
"visibility": "none",
"icon-image": "gym",
"icon-size": {"stops": [[17.5, 0.7], [21, 1.1]]},
"symbol-avoid-edges": true,
"symbol-placement": "point",
"text-anchor": "top",
"text-field": "{name}",
"text-font": ["SegoeFrutigerHelveticaMYingHei-Medium"],
"text-keep-upright": true,
"text-letter-spacing": 0.1,
"text-offset": [0, 1.05],
"text-size": {"stops": [[18, 5], [18.5, 6.5], [19, 8], [19.5, 9.5], [20, 11]]}
},
"metadata": {"microsoft.maps:layerGroup": "labels_indoor"},
"minzoom": 17.5,
"paint": {
"text-color": "rgba(0, 0, 0, 1)",
"text-halo-blur": 0.5,
"text-halo-color": "rgba(255, 255, 255, 1)",
"text-halo-width": 1,
"text-opacity": ["step", ["zoom"], 0, 18, 1]
},
"source-layer": "Indoor unit"
},
圖層屬性 | 描述 |
---|---|
id | 圖層的名稱 |
type | 此圖層的轉譯類型。 一些更常見的類型包括: 填滿:具有選擇性筆觸框線的填滿多邊形。 線條:筆觸線條。 符號:圖示或文字標籤。 填滿立體化:立體化 (3D) 多邊形。 |
篩選器 | 僅顯示符合篩選準則的功能。 |
layout | 圖層的配置屬性。 |
minzoom | 介於 0 到 24 之間的數字,表示圖層的最小縮放層級。 在小於 minzoom 的縮放層級上,會隱藏該圖層。 |
paint | 此圖層的預設繪製屬性。 |
source-layer | 來源會從地圖上顯示的向量圖格來源提供資料。 向量圖格來源需要;禁止用於所有其他來源類型,包括 GeoJSON 來源。 |
地圖設定
地圖設定為設定陣列。 每個設定都包含基底地圖和一或多個圖層,每個圖層均由樣式 + 圖格集 Tuple 所組成。
當您在 Azure 地圖服務中開發應用程式時,會透過地圖物件的將室內管理工具具現化來使用此地圖設定。 它會使用 mapConfigurationId
或 alias
來參考。 地圖設定是不可變的。 對現有地圖設定進行變更時,會建立新的地圖設定,因而產生不同的 mapConfingurationId
。 每當您使用現有地圖設定已使用的別名建立地圖設定時,均會指向新的地圖設定。
下列 JSON 是預設地圖設定的範例。 如需檔案中每個元素的描述,請參閱下表:
{
"version": 1.0,
"description": "This is the default Azure Maps map configuration for facility ontology tilesets.",
"defaultConfiguration": "indoor_light",
"configurations": [
{
"name": "indoor_light",
"displayName": "Indoor light",
"description": "A base style for Azure Maps.",
"thumbnail": "indoor_2022-01-01.png",
"baseMap": "microsoft_light",
"layers": [
{
"tilesetId": "fa37d225-924e-3f32-8441-6128d9e5519a",
"styleId": "microsoft-maps:indoor_2022-01-01"
}
]
},
{
"name": "indoor_dark",
"displayName": "Indoor dark",
"description": "A base style for Azure Maps.",
"thumbnail": "indoor_dark_2022-01-01.png",
"baseMap": "microsoft_dark",
"layers": [
{
"tilesetId": "fa37d225-924e-3f32-8441-6128d9e5519a",
"styleId": "microsoft-maps:indoor_dark_2022-01-01"
}
]
}
]
}
樣式物件屬性 | 描述 |
---|---|
Name | 樣式的名稱。 |
displayName | 樣式的顯示名稱。 |
description | 使用者定義的樣式描述。 |
縮圖 | 用來指定此樣式之樣式選擇器中使用的縮圖。 如需詳細資訊,請參閱樣式選擇器控制項。 |
baseMap | 用來設定基底地圖樣式。 |
圖層 | 圖層陣列是由一或多個 圖格集 + 樣式 Tuple 所組成,每一個都是地圖的圖層。 這可讓地圖上有多個建築物,每個建築物都以自己的圖格集表示。 |
其他資訊
- 若要進一步了解如何使用樣式編輯器修改樣式,請參閱建立室內地圖的自訂樣式。
- 如需樣式 Rest API 的詳細資訊,請參閱地圖服務 Creator Rest API 參考中的樣式。
- 如需地圖設定 Rest API 的詳細資訊,請參閱 Creator - 地圖設定 Rest API。
Wayfinding (預覽)
Wayfinding 服務可讓您為客戶提供設施內兩點之間的最短路徑。 匯入室內地圖資料並建立資料集之後,您就可以使用該資料來建立路線集。 路線集提供產生兩個點之間路徑所需的資料。 wayfinding 服務考慮了開口的最小寬度等因素,因此在樓層之間導航時可選擇性地排除電梯或階梯。
Creator wayfinding 由 Havok 提供。
Wayfinding 路徑
成功產生 wayfinding 路徑時,它會尋找指定設施中兩點之間的最短路徑。 路程中的每個樓層都會以個別的路段來表示,如同用來在樓層之間移動的任何階梯或電梯。
例如,路徑的第一段可能是從原點到該樓層的電梯。 下一個路段是電梯,最後一個路段則是從電梯到目的地的路徑。 估計的行進時間也會同時計算,並在 HTTP 回應 JSON 中傳回。
結構
設施資料必須含有結構,wayfinding 才能運作。 wayfinding 服務會計算設施中兩個選取點之間的最短路徑。 服務會在結構 (例如牆和任何其他無法穿透的結構) 周圍導航,藉此建立路徑。
垂直穿透
如果選取的原點和目的地位於不同的樓層,則 wayfinding 服務會決定哪些 verticalPenetration 物件 (例如階梯或電梯) 可以做為在樓層之間垂直導航的可能路徑。 根據預設,會使用產生最短路徑的選項。
Wayfinding 服務會根據垂直穿透的 direction
屬性值,在路徑中包含階梯或電梯。 如需 direction 屬性的詳細資訊,請參閱設施本體一文中的 verticalPenetration。 請參閱 wayfinding API 文件中的 avoidFeatures
和 minWidth
屬性,以了解可能會影響樓層之間路徑選擇的其他因素。
如需詳細資訊,請參閱室內地圖 wayfinding 服務操作說明一文。
使用室內地圖
轉譯 - 取得地圖底圖 API
Azure 地圖服務 [轉譯 - 取得地圖底圖] API 已擴大至支援 Creator 地圖底圖集。
應用程式可以使用 [轉譯 - 取得地圖底圖] API 來要求地圖底圖集。 然後,您可以將地圖底圖集整合到地圖控制項或 SDK 中。 如需使用轉譯服務的地圖控制項範例,請參閱室內地圖模組。
Web Feature Service API
您可以使用 Web Feature Service (WFS) 來查詢資料集。 WFS 會依循開放地理空間協會 API 功能。 您可以使用 WFS API 來查詢資料集本身內的功能。 例如,您可以使用 WFS 來尋找特定設施和樓層的所有中型會議室。
別名 API
轉換、資料集和圖格集這類建立者服務會傳回從 API 所建立的每個資源的識別碼。 別名 API 可讓您指派別名來參考資源識別碼。
室內地圖模組
Azure 地圖服務 Web SDK 包括室內地圖模組。 此模組為 Azure 地圖服務「地圖控制項」程式庫提供擴充功能。 室內地圖模組會轉譯在建立工具中建立的室內地圖。 它會整合小工具 (例如樓層選擇器),協助使用者將不同的樓層視覺化。
您可以使用室內地圖模組建立 Web 應用程式,將室內地圖資料與其他各項 Azure 地圖服務進行整合。 最常見的應用程式設定包括將來自其他地圖 (例如道路、影像、天氣和運輸) 的知識新增至室內地圖。
Indoor Maps 模組也支援動態地圖樣式。如需詳細資訊,請參閱使用即時地圖功能樣式來增強室內地圖。
Azure 地圖服務整合
開始開發適用於室內地圖的解決方案時,您可以探索整合現有 Azure 地圖服務功能的方式。 例如,您可以使用地理柵欄服務搭配 Creator 室內地圖,來實作資產追蹤或安全性案例。 例如,您可以使用地理柵欄 API,判斷員工是否進入或離開特定的室內區域。
資料維護
您可以使用 Azure 地圖服務建立者清單、更新和刪除 API 來列出、更新和刪除資料集和圖格集。
注意
當檢閱項目清單,以判斷是否將其刪除時,請考慮該刪除動作對所有相依 API 或應用程式的影響。 例如,如果您透過 [轉譯 - 取得地圖底圖] API 刪除正由應用程式使用的地圖底圖集,則應用程式無法轉譯該地圖底圖集。
範例:更新資料集
下列範例說明如何更新資料集、建立新的地圖底圖集,以及刪除舊的地圖底圖集: