2011-05-26 28 views
2

我有一個Silverlight應用程序,它可以在Silverlight網站上生成大量Google Maps對象。例如,一個地圖是這樣創建的:如何從Javascript訪問生成的Javascript(ScriptObject)?

var map = HtmlPage.Window.CreateInstance(@"google.maps.Map", container, mapOptions); 
var center = (ScriptObject)_map.Invoke("getCenter"); 

一切工作正常。但是現在我需要直接從Javascript訪問地圖對象。我認爲可以通過將地圖屬性公開爲ScriptableMember並從Javascript中使用它來完成。但是,「SA有點奇怪,因爲地圖對象的生活已經在瀏覽器中。但我怎麼訪問它?

更新

只是爲了更清楚我在說什麼關於

比方說,我有創建我的地圖,如上圖所示現在我有一個裝Javasript使用此功能的文件:?

function ReadMapCenter() 
{ 
    //Need the map object in Javascript 
    map.getCenter(); 
} 

我如何使用JavaScript訪問現有的地圖對象

回答

0

如果您只是將其公開爲ScriptObject,我認爲橋樑只是解開腳本對象而不是爲它創建另一層包裝。

替代

不要在全球LEVE使用使用CreateInstance

在你的JavaScript: -

var map; 
function createMap(container, mapOptions) 
{ 
    if (!map) 
    { 
     map = new google.maps.Map(container, mapOptions); 
    } 
    return map; 
} 

現在你的JavaScript有map全球它可以使用。

在Silverlight中使用: -

var map = HtmlPage.Window.Invoke("createMap", container, mapOptions); 
+0

增加了一些解釋,我最初的帖子。不知道我說的是否清楚。 – pantarhei 2011-05-26 13:31:16

+0

沒錯。我沒有想到這一點。我在SL世界被解僱了,並且認爲必須有一種方法來訪問ScriptObject。像這樣,我必須改變一些東西,但它可能是最簡單的方法。感謝指針。 – pantarhei 2011-05-27 05:17:35