我的公司开发了一个Web应用程序(使用GWT的Java),它使用Google Earth插件在全球范围内显示特定站点和其他数据。我们目前正在按使用量管理气球,这意味着需要显示气球的每个功能都在管理销毁(如果需要)和创建气球本身。这导致了如果我们试图打开气球而另一个仍然打开时GE插件有时会崩溃的问题。虽然我们几乎在所有情况下都已经解决了这个问题,但我认为集中管理气球是明智的(呃),而不是在每个使用气球的地方。
栏:
要展示的许多网站,其位置必须非常精确;
正在使用多个图层,每个图层都可以显示气球;
是否有人创建过“BalloonManager”类型的东西来处理这类事情?你怎么能这样做?
答案 0 :(得分: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);
}
如果您不想将某个功能传递给该方法,那么将接受像纬度和经度之类的东西作为双倍的方法来表达是相当简单的。