
Definicja stylów pozwala na podanie stylu jako pary (<Pair>) - klucza (<key>) oraz stylu (<Style>). Wartością klucza może być normal lub highlight. Jak wskazują same nazwy definicja stylów normal definiuje normalny wygląd placemark'a, zaś highlight w momencie najechania na niego myszą.
<Pair>
<key>normal</key>
<Style>
...
</Style>
</Pair>
<Pair>
<key>highlight</key>
<Style>
...
</Style>
</Pair>
Niestety w przeciwieństwie do przykładu z poprzedniego posta nie możemy umieścić tego węzła bezpośrednio w tagu placemark'a. W tym celu należy zastosować pełną formę dokumentu KML - pierwszym węzłem musi być tag <Document>, a w nim zawarte kolejne elementy (w tym tag placemark'a).<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
...
</Placemark>
</Document>
</kml>
Definicja stylów składających się z par trzeba umieścić w osobnym (od placemark'a) węźle - StyleMap. Dodając do niego atrybut id będziemy mogli się do niego odwołać w placemark'u.<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<StyleMap id="mojPlacemark">
...
</StyleMap>
<Placemark>
...
</Placemark>
</Document>
</kml>
StyleMap mieści już w sobie pary - prosty przykład poniżej.<StyleMap id="mojPlacemark">
<Pair>
<key>normal</key>
<Style>
...
</Style>
</Pair>
<Pair>
<key>highlight</key>
<Style>
...
</Style>
</Pair>
</StyleMap>
Połączenie StyleMap z placemark'iem odbywa się poprzez dodanie do niego tagu <styleUrl> - jako wartość podajemy identyfikator stylu poprzedzony znakiem # (hash).<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<StyleMap id="mojPlacemark">
<Pair>
<key>normal</key>
<Style>
<IconStyle>
<Icon>
<href>http://google-maps-icons.googlecode.com/files/wind.png</href>
</Icon>
<scale>3.0</scale>
</IconStyle>
<LabelStyle>
<color>7fffffff</color>
<colorMode>normal</colorMode>
</LabelStyle>
</Style>
</Pair>
<Pair>
<key>highlight</key>
<Style>
<IconStyle>
<Icon>
<href>http://google-maps-icons.googlecode.com/files/tram.png</href>
</Icon>
<scale>3.0</scale>
</IconStyle>
<LabelStyle>
<color>ff888888</color>
<colorMode>normal</colorMode>
</LabelStyle>
</Style>
</Pair>
</StyleMap>
<Placemark>
<name>Plac Grunwaldzki</name>
<styleUrl>#mojPlacemark</styleUrl>
<Point>
<coordinates>17.05876,51.11123,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
Tak oto łatwo i szybko uzyskaliśmy efekt mouseover w Google Earth.UPDATE:
Jeżeli chcecie przetestować jak wygląda zmiana ikonek dla placemark'ów, a następnie pobrać wygenerowany kod KML, możecie wykorzystać aplikację Placemark Creator przygotowaną specjalnie jako materiał do tego postu :)
Brak komentarzy:
Prześlij komentarz