日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

开发 Windows 8 Bing地图应用(2)

發(fā)布時間:2025/3/8 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发 Windows 8 Bing地图应用(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

下面是對使用JavaScript的Bing Maps Trip Optimizer示例的介紹,講述應(yīng)用的JavaScript部分組織形式,本地的上下文和網(wǎng)絡(luò)上下文之間的通信。

WinRT需要訪問網(wǎng)絡(luò)的代碼,下面是一些需要訪問網(wǎng)絡(luò)的活動示例。

q 加載一個外部JavaScript文件,比如Bing Maps的AJAX控件。

q 加載外部CSS。

q 使用XmlHttpRequest。

Bing Maps Trip Optimizer將界面分為兩個HTML文件,即“default.html”和“mapControl.html”,“default.html”屬于local context(本地上下文),其可以引用WinRT(這個包括自定義C++的WinRT組件,不過不能訪問網(wǎng)絡(luò)),“default.html”表示應(yīng)用的主頁面。“mapControl.html”可稱為web context(網(wǎng)絡(luò)上下文),因?yàn)槠淇稍L問網(wǎng)絡(luò),但不能訪問WinRT。“mapControl.html”是一個local context的內(nèi)嵌框架。下圖是local context和web context間的關(guān)系。

注意:就安全性而言,在一個單獨(dú)的模塊中維護(hù)web代碼,同樣會增加應(yīng)用的安全性。可能的話有必要驗(yàn)證從web context接收到local context的內(nèi)容,這樣可以減少發(fā)生安全性缺陷的可能,比如緩沖區(qū)溢出。

接下來在local context中引用web context。local context(default.html)中body標(biāo)簽定義一個內(nèi)嵌框架(iframe標(biāo)簽)來放置web context,代碼如下。

<body οnlοad="OnLoad();" style="padding: 0; margin: 0; position: absolute; left: 0px;

width: 100%; top: 0px; height: 100%; overflow: hidden">

<iframe id="mapFrame" src="ms-appx-web:///mapControl.html"

style="position: absolute; left: 0px; width: 100%; top: 0px; height: 100%; overflow: hidden">

</iframe>

</body>

在JavaScript的Metro風(fēng)格應(yīng)用中引用代碼文件時,使用這樣的語法:src = "ms-appx-web://<package-name>/<file-name>" 。如果目標(biāo)文件是和調(diào)用文件同一個包的一部分,可以在應(yīng)用的manifest文件中找到包名。

再來說上下文間的通信。local context和web context使用跨文檔信息通信,在上下文通信前,其必須首先注冊通信事件。“default.html”和“mapControl.html”為body標(biāo)簽中的“onload”屬性指定一個“OnLoad”函數(shù),“OnLoad”函數(shù)調(diào)用“addEventListener”方法監(jiān)聽消息類型事件,并將這些消息路由發(fā)送到“receiveMessage”函數(shù),代碼如下。

function OnLoad() {

window.addEventListener("message", receiveMessage, false);

}

注意:Bing Maps Trip Optimizer使用跨文檔消息傳遞,因?yàn)閷σ粋€上下文而言,其不能直接訪問其他上下文的DOM。

在上下文注冊了通信事件后,可以使用“postMessage”方法通信。這個方法發(fā)送一個跨文檔消息,而消息是路由到消息事件處理函數(shù)。由于跨文檔消息是基于文本的,應(yīng)用和web上下文使用“JSON.stringify”函數(shù)將信息序列化到JSON文本中。當(dāng)一個上下文收到一個消息時,它會調(diào)用“JSON.parse”函數(shù)將JSON文本字段反序列化。

為了說明上下文通信的方式,考慮讓web context通信local context來初始化自定義C++的WinRT組件(回憶一下可以想到,web context不能直接和WinRT組件交互),web context(即mapControl.html)中定義的“OnLoad”函數(shù)在初始化期間被調(diào)用,對mapControl.html頁面的部分代碼如下。

function OnLoad() {

window.addEventListener("message", receiveMessage, false);

}

“OnLoad”函數(shù)調(diào)用“optimizerLoad”函數(shù),“optimizerLoad”函數(shù)通信local context來初始化C++的WinRT組件,部分代碼如下。

rho, iterations, parallel) {

var message = {

"invoke": "optimizeTrip", "locations": locations, "TravelMode": TravelMode, "Optimize": Optimize, "BingMapsKey": BingMapsKey,

"alpha": alpha, "beta": beta, "rho": rho, "iterations": iterations, "parallel": parallel

};

window.parent.postMessage(JSON.stringify(message), '*');

}

從web context,而不是直接從local context初始化WinRT組件的加載,這樣確保web context和local context都在創(chuàng)建WinRT組件前被加載。

總結(jié)

以上是生活随笔為你收集整理的开发 Windows 8 Bing地图应用(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。