我試圖通過Branflake(或Branflake2267)GWT/Java庫使用(非官方)Google Maps V3 JavaScript API。所有的基礎庫已經加載,我得到了標準的Google衛星圖像顯示沒有問題。如何使用BranFlake GWT-Maps-V3 API創建自定義MapType?
但是,現在我想要創建自定義地圖類型(MapType
),該類型提供了自己的Element
值進行顯示。提供的ImageMapType
和StyledMapType
是不夠的。
JavaScript庫支持此功能,Google甚至在其文檔中提供了example CoordMapType map。
我想知道如何使用Brandon Donnelson創建的GWT庫來做這件事。
我嘗試到目前爲止...
我試圖創建一個純Java類,implements MapType
,但還是失敗了不正確的對象類型:
class FooMap implements MapType {...}
@com.google.gwt.maps.client.maptypes.MapTypeRegistry::set(Ljava/lang/String;Ljava/lang/Object;)([string:'FooID', Java object: [email protected]])
com.google.gwt.core.client.JavaScriptException: (Error)@com.google.gwt.core.client.impl.Impl::apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)([JavaScript object(44), JavaScript object(32), JavaScript object(46)]): Expected value implementing google.maps.MapType
我想通它必須是一個JavaScript對象試圖擴展,但它也失敗:
class FooMap extends JavaScriptObject implements MapType {...}
JavaScriptObject must be created from JavaScript. [paraphrased]
我試圖通過JavaScript創建它,但沒有運氣:
static public FooMap newInstance(MapOptions options) {
return createJso(options).cast();
}
static private final native JavaScriptObject createJso(MapOptions options) /*-{
return new $wnd.google.maps.Map(document.getElementById('map-canvas'), options);
}-*/;
[ERROR] Line 296: Instance fields cannot be used in subclasses of JavaScriptObject
我打消了我的本地成員(說不上哪裏放他們,但至少我可以測試),但createJso()
方法仍然會拋出異常:
com.google.gwt.core.client.JavaScriptException: (TypeError) @com.google.gwt.core.client.impl.Impl::apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)([JavaScript object(30), JavaScript object(32), JavaScript object(33)]): Cannot read property 'offsetWidth' of null
其中,儘可能接近我可以告訴其他帖子,是因爲我還沒有創建一個地圖,因此還沒有創建一個map-canvas元素......但這就是我想要做的。
我目前沒有想法,所以認爲這裏的好人可能有一些想法。如果我取得任何進展,我會添加更新(或者可能回答<有希望的樣子>)。