我使用WebBrowser控件InvokeScript嘗試和使用HTML的谷歌地圖的JavaScript API做一個簡單的地圖。我在JavaScript中的HTML頁面中編寫了幾個函數來處理地圖,並且我在C#中的WPF應用程序中複製了這些方法,並對它們進行了編輯,以便它們調用方法並執行他們需要做的與JavaScript接口。獲取JavaScript的自定義類型回到C#從InvokeScript與自定義類型結構保存
我有一個問題,因爲並不是所有由JavaScript返回的值都是簡單的,單值類型如字符串,整數或布爾值,並返回像LatLng這樣的自定義類型,我不知道如何「保留'返回的值作爲自定義類型的單獨'部分'。爲了幫助更多地解釋:
通常情況下,我可以使用下面的代碼:
return Convert.ToInt16(browser.InvokeScript("getHeading"));
其中要求在JavaScript以下功能:
function GetHeading() {
return map.getHeading();
}
和當前標題屬性返回一個整數值的地圖。這很容易,這沒有問題。但是一些函數具有自定義的返回類型。
LatLng類型由一個緯度值和一個經度值組成,所以它不能返回一個簡單的值,如果我用這篇文章的第一個代碼片段嘗試它,那麼它會拋出一個錯誤。對於如下所示的某些功能:
function GetCentre() {
return map.getCenter();
}
返回一個LatLng,其中包含地圖中心的緯度和經度。我怎樣才能保存返回值,並保持它的緯度和經度然後將這個像這樣投入的自定義類型在C#:
public class LatLng
{
public string latitude { get; set }
public string longitude { get; set; }
}
我必須寫在JavaScript端兩個單獨的功能?:一個返回中心的緯度,另一個返回它的經度。基本上我想要做的是在WebBrowser控件上使用InvokeScript,調用返回自定義類型的javascript函數,並將該值保存在自定義類型中,然後我可以在C#中使用它,例如returnedValue.latitude和returnedValue.longitude。我怎麼能這樣做,謝謝?