Gwt 如何在本机方法中创建JavaScript对象?

Gwt 如何在本机方法中创建JavaScript对象?,gwt,jsni,Gwt,Jsni,我正在使用google maps api,我想创建他们其中一个对象的实例: public static final native void test(double lat, double lng) /*-{ var obj = new google.maps.LatLng(lat, lng); }-*/; 但上述操作不起作用,打印出以下错误: com.google.gwt.core.client.JavaScriptException: (ReferenceError) @com.g

我正在使用google maps api,我想创建他们其中一个对象的实例:

public static final native void test(double lat, double lng) /*-{
    var obj = new google.maps.LatLng(lat, lng);
}-*/; 
但上述操作不起作用,打印出以下错误:

com.google.gwt.core.client.JavaScriptException: (ReferenceError)
@com.google.gwt.core.client.impl.Impl::apply
    (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)
    ([JavaScript object(4), JavaScript object(3), JavaScript object(6)]): 
    google is not defined
所以我可能必须向GWT解释“google.maps.LatLng”对象是什么——我该怎么做?我以为有特定的语法,但在文档中似乎再也找不到了


谢谢

如果您在主机页的其他地方定义了google.maps,则必须在GWT代码中以$wnd作为前缀:

public static final native void test(double lat, double lng) /*-{
    var obj = new $wnd.google.maps.LatLng(lat, lng);
}-*/;
来自GWT文档:

从JSNI访问浏览器窗口和文档对象时, 您必须分别将它们引用为$wnd和$doc。你的 脚本在嵌套框架中运行,$wnd和$doc将自动 初始化为正确引用主机页的窗口和文档