W bibliotece,
z której korzystam
do wizualizowania plików GPX na google maps,
do wyświetlenia
punktu (czyli elementu wpt
) wykorzystywana jest funkcja
GPXParser.prototype.CreateMarker
:
GPXParser.prototype.CreateMarker = function(point) { var lon = parseFloat(point.getAttribute("lon")); var lat = parseFloat(point.getAttribute("lat")); // ... ... ... var marker = new GMarker(new GLatLng(lat,lon)); // ... ... ... }
W powyższym
symbol // ... ... ...
oznacza pominięte fragmenty funkcji.
Wszystkie ikony
dla elementów wpt
są oznaczone standardową dużą czerwoną pinezką.
Ja chcę, żeby moja pinezka ,,reagowała'' na obecność elementu
type
, który według
schematu GXP, określa typ punktu.
Przykładowo miejsce odwiedzone będę oznaczał jako:
<wpt lat="54.071729" lon="18.446817"><ele/> <name>Skarszewy</name> <type>visited</type> <extensions><html>Skarszewy</html></extensions></wpt>
Tak oznaczone miejsca mają być wyróżniane za pomocą niebieskiej ikony. Pozostałe będą oznaczane czerwoną:
GPXParser.prototype.CreateMarker = function(point) { var lon = parseFloat(point.getAttribute("lon")); var lat = parseFloat(point.getAttribute("lat")); var wpType = point.getElementsByTagName("type")[0] ; // czy istnieje element type? var wpTypeTxt = "?"; if ( wpType ) { wpTypeTxt = wpType.firstChild.nodeValue; } // jeżeli tak przypisz wartość // ... ... ... // zmiana wyglądu, skopiowane z: http://kody.wig.pl/tag/gmarker/ var cIcon = new GIcon(); // Ikony do pobrania z http://sites.google.com/site/gmapicons/ // umieszczam w katalogu '/icons_/' if ( wpTypeTxt == "visited" ) { cIcon.image = '/icons_/mm_20_blue.png'; } else { cIcon.image = '/icons_/mm_20_red.png'; } cIcon.shadow = "/icons_/mm_20_shadow.png"; var marker = new GMarker(new GLatLng(lat,lon), cIcon ); cIcon.iconSize = new GSize(12, 20); cIcon.shadowSize = new GSize(22, 20); cIcon.iconAnchor = new GPoint(6, 20); cIcon.infoWindowAnchor = new GPoint(5, 1); // ... ... ... }
Wynik można obejrzeć tutaj.