0

我的公司开发了一个 Web 应用程序(在 Java 中使用 GWT),它使用 Google 地球插件来显示地球上的特定站点和其他数据。我们目前正在按使用情况管理气球,这意味着需要显示气球的每个功能都在管理气球本身的销毁(如果需要)和创建。这会导致 GE 插件有时会崩溃的问题,如果我们尝试打开一个气球,而另一个气球仍处于打开状态。虽然我们几乎在所有情况下都解决了这个问题,但我认为集中管理气球会更聪明,而不是在每个使用它们的地方。

障碍:

  • 要展示的站点很多,位置必须非常精确;

  • 使用了多个图层,每个图层都可能显示气球;

有没有人创建了一个“BalloonManager”类型的东西来处理这种事情?你怎么能这样做?

4

1 回答 1

1

听起来你应该使用封装,看看将气球创建移动到一个单独的方法中。

此外,关于“如果我们尝试打开一个气球而另一个气球仍然打开,GE 插件有时会崩溃的问题” - 确保您ge.setBalloon(null)在打开任何气球之前简单地调用,或者更好的是,简单地重复使用任何当前的气球而不是创建一个新的(如果有的话)。

下面的代码应该有助于解释——它使用了你需要的 api 方法,所以它应该有一些用处。

public void function OpenFeatureBalloon(GEPlugin plugin, IKMLFeature feature) 
{
  // Get any open balloon
  IGEFeatureBalloon balloon = plugin.getBalloon();

  if (balloon == null) 
  {
     // not there, so create one
     balloon = plugin.createHtmlStringBalloon("");
  }

  // set the balloon to the features geographic location
  balloon.setFeature(feature);

  // open the balloon in the plugin
  ge.setBalloon(balloon);
}

如果您不想将某个特征传递给该方法,那么修改该方法以接受诸如纬度和经度之类的东西作为例如双精度值将是相当简单的。

于 2012-02-12T10:55:49.543 回答