Как лучше всего управлять воздушными шарами с помощью подключаемого модуля Google Планета Земля?

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

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

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

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

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


person Chris Cashwell    schedule 24.05.2011    source источник


Ответы (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);
}

Если вы не хотите передавать функцию в метод, было бы довольно тривиально изменить метод, чтобы он принимал что-то вроде широты и долготы, например, как двойные.

person Fraser    schedule 12.02.2012