1

我正在尝试使用 GAE 和 GWT openlayers 库创建一个带有地图的网站。我试图通过在 SiteNameWidget.ui.xml 文件中使用 MapWidget 来实现它,但我收到以下错误。

我已经设法通过使用 RootPanel.get().add(MapWidget) 方法使其工作,但我希望能够使用 XML 文件方法,因为以这种方式操作布局似乎更容易。

任何人?

org.gwtopenmaps.openlayers.client.MapWidget 没有默认(零参数)构造函数。要解决此问题,您可以在 UiBinder 的所有者上定义 @UiFactory 方法,或者使用 @UiConstructor 注释 MapWidget 的构造函数。

4

1 回答 1

0

这意味着,因为 MapWidget 只能使用参数进行实例化,所以您不能只在视图中将其声明为 @UiField 并依靠 GWT 使用默认构造函数对其进行实例化。

相反,您必须提供一个构造函数(如果您正在专门处理一个小部件)或一个工厂方法,它们将被调用以适当地实例化您的 MapWidget(在这种情况下使用 MapOptions 作为参数)。

例如,添加:

@UiFactory MapWidget createMapWidget() {  // The method name is irrelevant
   MapOptions opts = MapOptions.newInstance();
   options.setScrollWheel(false);         // Some sample customization. You may use fields initialized in your actual view constructor (which is called before) to do so.
   return new MapWidget(opts);
}

请参阅http://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder?#Using_a_widget

于 2013-03-26T18:47:23.023 回答