Google Планета Земля: получение URL-адреса значка из KML с помощью JAK

В настоящее время я использую JAK (Java API для KML) для взаимодействия с Google Планета Земля и настроенным файлом KML. Я могу получить / установить имя, описание, координаты метки, используя такие вещи, как Placemark p.getName () или point.getCoordinates (); в список и т. д. Но у меня проблемы с получением URL-адреса изображения, используемого для значка. Так, например, если в моем файле kml есть эта метка (содержащаяся в документе, а затем в общем теге KML):

  <Placemark>
    <name>Isla de Roatan</name>
    <description>
       Cruise Stop        
    </description>
    <Style>
        <IconStyle>
            <Icon>
                <href>http://maps.google.com/mapfiles/kml/shapes/airports.png</href>
            </Icon>
        </IconStyle>
    </Style>
    <Point>
      <coordinates>-86.53,16.337461,0</coordinates>
    </Point>
  </Placemark>

Как я могу получить этот URL-адрес png, чтобы сказать, вставить отдельный объект String? Я видел в Style .getIconStyle, а в IconStyle - .getIcon, а внутри Icon - .getHttpQuery, но ничего, что могло бы связать просмотр стиля из Placemark / Feature, за исключением .getStyleSelector и .getStyleUrl. Можете ли вы сделать это с помощью одного из них или карты стилей? Я не уверен, что полностью понимаю, что делает каждый из них. Кроме того, в обратном порядке, что можно сделать, чтобы установить этот URL-адрес? Спасибо за любую помощь!


person MiHyeon    schedule 02.07.2012    source источник


Ответы (1)


Feature.getStyleSelector() возвращает List<StyleSelector>. Style является подклассом StyleSelector, поэтому ваш стиль должен быть в этом списке (вместе с любыми другими стилями и картами стилей, определенными для компонента).

Настройка стиля (и URL-адреса значка):

Placemark placemark = ...;

Style myStyle = new Style().withId("my_style");
myStyle.withIconStyle(new IconStyle().withIcon(new Icon().withHref("http://someurl")));

placemark.addToStyleSelector(myStyle);

Получение стиля (и URL-адреса значка):

for (StyleSelector styleSelector : placemark.getStyleSelector())
{
    if (styleSelector.getId() == "my_style")
    {
        String href = ((Style)styleSelector).getIconStyle().getIcon().getHref();
    }
}
person Jon Burgess    schedule 03.07.2012
comment
Спасибо! Я немного изменил вещи в соответствии со своими потребностями, но ((Style) styleSelector) .otherstuff меня сбивал с толку. Еще раз спасибо :) - person MiHyeon; 03.07.2012
comment
Спасибо, это помогло мне. Я также нашел страницу, которая ссылается на все стандартные значки, на случай, если кому-то понадобится URL-адрес для стандартного значка. kml4earth.appspot.com/icons.html - person James; 12.01.2016