2

我正在使用 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”对象是什么——我该怎么做?我认为有一个特定的语法,但似乎无法在文档中找到它,

谢谢

4

1 回答 1

3

如果您在主机页面的其他位置定义 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 会自动初始化以正确引用主机页面的窗口和文档。

于 2012-12-26T03:49:58.193 回答