我有一个Silverlight应用程序,可以在Silverlight网站上生成大量Google Maps对象。例如,Map就像这样创建:
var map = HtmlPage.Window.CreateInstance(@"google.maps.Map", container, mapOptions);
var center = (ScriptObject)_map.Invoke("getCenter");
一切正常。但是现在我需要直接从Javascript访问地图对象。我认为可以通过将map属性公开为ScriptableMember并从Javascript中使用它来完成。但这有点奇怪,因为地图对象已存在于浏览器中。但我如何访问它?
更新
只是为了让我更清楚我所说的
假设我已经创建了我的地图,如上所示。现在我有一个带有这个函数的加载Javasript文件:
function ReadMapCenter()
{
//Need the map object in Javascript
map.getCenter();
}
如何从Javascript访问现有的地图对象?
答案 0 :(得分:0)
如果你只是将它公开为类型ScriptObject
,我认为桥只会解压缩脚本对象,而不是为它创建另一层包装。
<强>替代强>
请勿使用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);