Bing 地圖服務路線最佳化程式範例概觀
本文件說明 Bing 地圖服務路線最佳化程式專案的基本特性,例如建立方式和結構方式,以及建置方式。
注意事項 |
---|
如需本文件的對應範例程式碼,請參閱 Bing 地圖服務路線最佳化程式範例 (英文)。 |
本文內容
建立 Visual Studio 專案
建置、部署和執行範例
應用程式工作流程
後續步驟
在 Visual Studio 中建立 Visual Studio 專案
如果您已下載並解壓縮範例,則可以在 Visual Studio 中開啟 TripOptimizer.sln 方案檔,程式碼就會展現在您面前。您也可以在 MSDN 範例庫的 Bing 地圖服務路線最佳化程式範例頁面 (英文) 中選取 [瀏覽程式碼] 索引標籤來檢視原始碼。
當我們建立 Bing 地圖服務路線最佳化程式的 Visual Studio 專案時,我們使用了 JavaScript 的 [空白的應用程式] 範本建立主要應用程式專案,並使用 Visual C++ 的 [Windows 執行階段元件] 範本建立 C++ 類別庫。JavaScript 專案會參考 C++ 專案。在 C++ 中建立 Windows 執行階段元件文件會說明如何設定專案參考。
針對 JavaScript 專案,[空白的應用程式] 範本可提供以 Windows 市集應用程式形式執行所需的基本功能。使用這個範本會建立空白的應用程式。Visual Studio 也有其他可在一開始就提供更強功能的範本。Bing 地圖服務路線最佳化程式會使用 [空白的應用程式] 範本隨附的預設檔案,並加入更多的影像和程式碼檔案。
[WinRT 類別庫] 範本中有一項重要的專案設定:/ZW 選項,此選項讓程式能夠使用 Windows 執行階段語言擴充功能。
警告
/ZW 選項與某些選項不相容,例如 /clr。這表示在相同的 Visual C++ 專案中,您無法同時以 .NET Framework 與 Windows 執行階段為目標。
Windows 市集 上的每個 Windows 市集應用程式都是以「應用程式套件」(App Package) 的形式提供。應用程式套件包含「封裝資訊清單」(Package Manifest),內含應用程式的相關資訊。例如,您可以指定應用程式的「能力」(Capability) 來定義應用程式對受保護的系統資源或使用者資料的存取權。如果您認為應用程式需要特定的能力,請在封裝資訊清單中宣告。Bing 地圖服務路線最佳化程式會指定 [網際網路 (用戶端)],以讓應用程式能夠存取 Bing Maps Web 服務。如需應用程式套件和能力的詳細資訊,請參閱App packages and deployment。
如需 Visual Studio 整合式開發環境 (IDE) 中適用於 JavaScript、C++ 和 .NET 專案之功能與元件的詳細資訊,請參閱Develop Windows Store apps using Visual Studio。
[頂端]
建置、部署和執行範例
建置 Windows 市集應用程式專案,就像建立標準專案一樣(在功能表列上,選擇 [建置]、[建置方案])。建置步驟會編譯程式碼,還會將它包裝成 Windows 市集應用程式以供使用。
建置專案後,必須加以部署(在功能表列上,選擇 [建置]、[部署方案])。當您從偵錯工具執行應用程式時,Visual Studio 也會部署專案。
在您部署專案之後,請選擇 [Bing 地圖服務路線最佳化程式] 磚來執行應用程式。或者,從 Visual Studio 的功能表列,選擇 [偵錯]、[開始偵錯]。請確定啟動專案為 TripOptimizerWebApp。
注意事項 |
---|
必須要有 Bing 地圖服務金鑰才能執行此範例。如需如何取得 Bing 地圖服務金鑰的詳細資訊,請參閱Getting a Bing Maps Key。 |
[頂端]
應用程式工作流程
以下是應用程式的工作流程。
為旅程輸入最多 25 個位置。第一個項目同時代表起點與終點位置。
提示
您可以選取 [Parks Demo] 或 [Delivery Demo],以在位置區域填入預先定義的值。
選取旅行方式 (開車或步行)、距離單位 (英哩或公里) 和最佳化方法 (最短距離、最短時間或避開車流)。
想要的話,您還可以指定最佳化演算法的輸入以及是否使用平行計算。預設會啟用平行計算。
注意事項 我們加入了 [Advanced Options] 區段供開發人員做學習之用。這些選項並非要當做應用程式的一部分來使用。
選擇 [Get Directions] 開始整個程序。應用程式的 JavaScript 部分將位置和選項傳遞給 C++ Windows 執行階段元件。C++ 元件執行下列步驟:
使用 Bing 地圖具像狀態傳輸 (REST) 服務擷取每個位置的緯度與經度。Bing 地圖服務會納入所有與位置字串相符的可能值做為回應。
針對所有具有多個可能值的位置,將所有的可能值顯示在 UI 中,然後返回步驟 1。
使用 Bing 地圖 REST 服務,擷取所有位置彼此之間的距離 (開車或步行)。這個步驟會使用先前在步驟 a 中取得的緯度與經度值。
計算行經所有位置的最佳路線,並將這個路線傳遞給應用程式的 JavaScript 部分。
HTML/JavaScript 部分顯示逐步交通指示,並使用 Bing 地圖服務 AJAX 控制項顯示最佳路線。
您可以與地圖互動。當您選擇交通指示中的某個步驟或位置時,AJAX 控制項會移至該步驟或位置,並在地圖上加上圖釘。
下圖顯示這套工作流程更基本的檢視。
C++ 元件會分兩階段使用 Bing 地圖 REST 服務。第一個階段在協助使用者確認 Bing 地圖服務具有正確的位置。例如,如果您指定 "Pittsburgh",Bing 地圖服務可能會傳回 "Pittsburgh, PA"、"Pittsburgh, ON" 與 "Pittsburgh, GA" 做為可能值。在第一個階段就解決掉多個可能位置的問題後,第二個階段 (擷取所有位置彼此之間的距離) 就能夠順利執行,而不會遇到位置不明確的問題。
注意事項 |
---|
我們原也可以在應用程式的 JavaScript 部分中執行與 Bing 地圖 REST 服務的通訊。我們之所以將它加到 C++ 元件中,是為了要示範如何在 C++ 中與 REST 介面進行通訊以及剖析 XML 回應。 |
[頂端]
後續步驟
如需如何在 Bing 地圖服務路線最佳化應用程式中使用 JavaScript 的詳細資訊,請參閱在 Bing 地圖服務路線最佳化程式範例中使用 JavaScript。
[頂端]