Какой самый умный способ управления воздушными шарами с помощью плагина Google Планета Земля? - PullRequest
0 голосов
/ 24 мая 2011

Моя компания разрабатывает веб-приложение (на Java с использованием GWT), в котором используется плагин Google Планета Земля для отображения определенных сайтов и других данных по всему миру.В настоящее время мы работаем с всплывающими подсказками для каждого отдельного использования, то есть каждая функция, которая должна отображать всплывающую подсказку, управляет уничтожением (при необходимости) и созданием самого всплывающей подсказки.Это приводит к проблемам, при которых плагин GE иногда падает, если мы пытаемся открыть воздушный шар, пока другой еще открыт.Хотя мы разработали это почти в каждом случае, я думаю, было бы разумно (а) управлять центральными шарами централизованно, а не в каждом месте, где они используются.

Препятствия:

  • много мест для показа, местоположения которых должны быть очень точными;

  • используется несколько слоев, на каждом из которых могут отображаться воздушные шары;

Кто-нибудь создал "BalloonManager" -типа, который обрабатывает подобные вещи?Как ты мог это сделать?

1 Ответ

1 голос
/ 12 февраля 2012

Звучит так, как будто вы должны использовать инкапсуляцию, посмотрите, как переместить создание шарика в отдельный метод.

Кроме того, что касается «проблем, при которых плагин 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);
}

Если вы не хотите передавать объект методу, было бы довольно тривиально смешать метод, чтобы он принял что-то вроде широты и долготы, например, удваивающихся.

...