Звучит так, как будто вы должны использовать инкапсуляцию, посмотрите, как переместить создание шарика в отдельный метод.
Кроме того, что касается «проблем, при которых плагин 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);
}
Если вы не хотите передавать объект методу, было бы довольно тривиально смешать метод, чтобы он принял что-то вроде широты и долготы, например, удваивающихся.