听起来你应该使用封装,看看将气球创建移动到一个单独的方法中。
此外,关于“如果我们尝试打开一个气球而另一个气球仍然打开,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);
}
如果您不想将某个特征传递给该方法,那么修改该方法以接受诸如纬度和经度之类的东西作为例如双精度值将是相当简单的。