PageSourceSearch

https://www.finistere.fr/wp-content/cache/min/1/wp-content/themes/…/libs/leaflet-kml/L.KML.js?ver=1790174993

js finistere.fr collected 2026-09-24 09:16:46 UTC 10,415 bytes, 66 lines download raw bytes

1/*!
2	Copyright (c) 2011-2015, Pavel Shramov, Bruno Bergot - MIT licence
3*/
4L.KML=L.FeatureGroup.extend({initialize:function(kml,kmlOptions){this._kml=kml;this._layers={};this._kmlOptions=kmlOptions;if(kml){this.addKML(kml,kmlOptions)}},addKML:function(xml,kmlOptions){var layers=L.KML.parseKML(xml,kmlOptions);if(!layers||!layers.length)return;for(var i=0;i<layers.length;i++){this.fire('addlayer',{layer:layers[i]});this.addLayer(layers[i])}
5this.latLngs=L.KML.getLatLngs(xml);this.fire('loaded')},latLngs:[]});L.Util.extend(L.KML,{parseKML:function(xml,kmlOptions){var style=this.parseStyles(xml,kmlOptions);this.parseStyleMap(xml,style);var el=xml.getElementsByTagName('Folder');var layers=[],l;for(var i=0;i<el.length;i++){if(!this._check_folder(el[i])){continue}
6l=this.parseFolder(el[i],style);if(l){layers.push(l)}}
7el=xml.getElementsByTagName('Placemark');for(var j=0;j<el.length;j++){if(!this._check_folder(el[j])){continue}
8l=this.parsePlacemark(el[j],xml,style);if(l){layers.push(l)}}
9el=xml.getElementsByTagName('GroundOverlay');for(var k=0;k<el.length;k++){l=this.parseGroundOverlay(el[k]);if(l){layers.push(l)}}
10return layers},_check_folder:function(e,folder){e=e.parentNode;while(e&&e.tagName!=='Folder'){e=e.parentNode}
11return!e||e===folder},parseStyles:function(xml,kmlOptions){var styles={};var sl=xml.getElementsByTagName('Style');for(var i=0,len=sl.length;i<len;i++){var style=this.parseStyle(sl[i],kmlOptions);if(style){var styleName='#'+style.id;styles[styleName]=style}}
12return styles},parseStyle:function(xml,kmlOptions){var style={},poptions={},ioptions={},el,id;var attributes={color:!0,width:!0,Icon:!0,href:!0,hotSpot:!0};function _parse(xml){var options={};for(var i=0;i<xml.childNodes.length;i++){var e=xml.childNodes[i];var key=e.tagName;if(!attributes[key]){continue}
13if(key==='hotSpot'){for(var j=0;j<e.attributes.length;j++){options[e.attributes[j].name]=e.attributes[j].nodeValue}}else{var value=e.childNodes[0].nodeValue;if(key==='color'){options.opacity=parseInt(value.substring(0,2),16)/255.0;options.color='#'+value.substring(6,8)+value.substring(4,6)+value.substring(2,4)}else if(key==='width'){options.weight=parseInt(value)}else if(key==='Icon'){ioptions=_parse(e);if(ioptions.href){options.href=ioptions.href}}else if(key==='href'){options.href=value}}}
14return options}
15el=xml.getElementsByTagName('LineStyle');if(el&&el[0]){style=_parse(el[0])}
16el=xml.getElementsByTagName('PolyStyle');if(el&&el[0]){poptions=_parse(el[0])}
17if(poptions.color){style.fillColor=poptions.color}
18if(poptions.opacity){style.fillOpacity=poptions.opacity}
19el=xml.getElementsByTagName('IconStyle');if(el&&el[0]){ioptions=_parse(el[0])}
20if(ioptions.href){var iconOptions={iconUrl:ioptions.href,shadowUrl:null,anchorRef:{x:ioptions.x,y:ioptions.y},anchorType:{x:ioptions.xunits,y:ioptions.yunits}};if(typeof kmlOptions==="object"&&typeof kmlOptions.iconOptions==="object"){L.Util.extend(iconOptions,kmlOptions.iconOptions)}
21style.icon=new L.KMLIcon(iconOptions)}
22id=xml.getAttribute('id');if(id&&style){style.id=id}
23return style},parseStyleMap:function(xml,existingStyles){var sl=xml.getElementsByTagName('StyleMap');for(var i=0;i<sl.length;i++){var e=sl[i],el;var smKey,smStyleUrl;el=e.getElementsByTagName('key');if(el&&el[0]){smKey=el[0].textContent}
24el=e.getElementsByTagName('styleUrl');if(el&&el[0]){smStyleUrl=el[0].textContent}
25if(smKey==='normal'){existingStyles['#'+e.getAttribute('id')]=existingStyles[smStyleUrl]}}
26return},parseFolder:function(xml,style){var el,layers=[],l;el=xml.getElementsByTagName('Folder');for(var i=0;i<el.length;i++){if(!this._check_folder(el[i],xml)){continue}
27l=this.parseFolder(el[i],style);if(l){layers.push(l)}}
28el=xml.getElementsByTagName('Placemark');for(var j=0;j<el.length;j++){if(!this._check_folder(el[j],xml)){continue}
29l=this.parsePlacemark(el[j],xml,style);if(l){layers.push(l)}}
30el=xml.getElementsByTagName('GroundOverlay');for(var k=0;k<el.length;k++){if(!this._check_folder(el[k],xml)){continue}
31l=this.parseGroundOverlay(el[k]);if(l){layers.push(l)}}
32if(!layers.length){return}
33if(layers.length===1){l=layers[0]}else{l=new L.FeatureGroup(layers)}
34el=xml.getElementsByTagName('name');if(el.length&&el[0].childNodes.length){l.options.name=el[0].childNodes[0].nodeValue}
35return l},parsePlacemark:function(place,xml,style,options){var h,i,j,k,el,il,opts=options||{};el=place.getElementsByTagName('styleUrl');for(i=0;i<el.length;i++){var url=el[i].childNodes[0].nodeValue;
35for(var a in style[url]){opts[a]=style[url][a]}}
36il=place.getElementsByTagName('Style')[0];if(il){var inlineStyle=this.parseStyle(place);if(inlineStyle){for(k in inlineStyle){opts[k]=inlineStyle[k]}}}
37var multi=['MultiGeometry','MultiTrack','gx:MultiTrack'];for(h in multi){el=place.getElementsByTagName(multi[h]);for(i=0;i<el.length;i++){var layer=this.parsePlacemark(el[i],xml,style,opts);this.addPlacePopup(place,layer);return layer}}
38var layers=[];var parse=['LineString','Polygon','Point','Track','gx:Track'];for(j in parse){var tag=parse[j];el=place.getElementsByTagName(tag);for(i=0;i<el.length;i++){var l=this['parse'+tag.replace(/gx:/,'')](el[i],xml,opts);if(l){layers.push(l)}}}
39if(!layers.length){return}
40var layer=layers[0];if(layers.length>1){layer=new L.FeatureGroup(layers)}
41this.addPlacePopup(place,layer);return layer},addPlacePopup:function(place,layer){var el,i,j,name,descr='';el=place.getElementsByTagName('name');if(el.length&&el[0].childNodes.length){name=el[0].childNodes[0].nodeValue}
42el=place.getElementsByTagName('description');for(i=0;i<el.length;i++){for(j=0;j<el[i].childNodes.length;j++){descr=descr+el[i].childNodes[j].nodeValue}}
43if(name){layer.bindPopup('<h2>'+name+'</h2>'+descr,{className:'kml-popup'})}},parseCoords:function(xml){var el=xml.getElementsByTagName('coordinates');return this._read_coords(el[0])},parseLineString:function(line,xml,options){var coords=this.parseCoords(line);if(!coords.length){return}
44return new L.Polyline(coords,options)},parseTrack:function(line,xml,options){var el=xml.getElementsByTagName('gx:coord');if(el.length===0){el=xml.getElementsByTagName('coord')}
45var coords=[];for(var j=0;j<el.length;j++){coords=coords.concat(this._read_gxcoords(el[j]))}
46if(!coords.length){return}
47return new L.Polyline(coords,options)},parsePoint:function(line,xml,options){var el=line.getElementsByTagName('coordinates');if(!el.length){return}
48var ll=el[0].childNodes[0].nodeValue.split(',');return new L.KMLMarker(new L.LatLng(ll[1],ll[0]),options)},parsePolygon:function(line,xml,options){var el,polys=[],inner=[],i,coords;el=line.getElementsByTagName('outerBoundaryIs');for(i=0;i<el.length;i++){coords=this.parseCoords(el[i]);if(coords){polys.push(coords)}}
49el=line.getElementsByTagName('innerBoundaryIs');for(i=0;i<el.length;i++){coords=this.parseCoords(el[i]);if(coords){inner.push(coords)}}
50if(!polys.length){return}
51if(options.fillColor){options.fill=!0}
52if(polys.length===1){return new L.Polygon(polys.concat(inner),options)}
53return new L.MultiPolygon(polys,options)},getLatLngs:function(xml){var el=xml.getElementsByTagName('coordinates');var coords=[];for(var j=0;j<el.length;j++){coords=coords.concat(this._read_coords(el[j]))}
54return coords},_read_coords:function(el){var text='',coords=[],i;for(i=0;i<el.childNodes.length;i++){text=text+el.childNodes[i].nodeValue}
55text=text.split(/[\s\n]+/);for(i=0;i<text.length;i++){var ll=text[i].split(',');if(ll.length<2){continue}
56coords.push(new L.LatLng(ll[1],ll[0]))}
57return coords},_read_gxcoords:function(el){var text='',coords=[];text=el.firstChild.nodeValue.split(' ');coords.push(new L.LatLng(text[1],text[0]));return coords},parseGroundOverlay:function(xml){var latlonbox=xml.getElementsByTagName('LatLonBox')[0];var bounds=new L.LatLngBounds([latlonbox.getElementsByTagName('south')[0].childNodes[0].nodeValue,latlonbox.getElementsByTagName('west')[0].childNodes[0].nodeValue],[latlonbox.getElementsByTagName('north')[0].childNodes[0].nodeValue,latlonbox.getElementsByTagName('east')[0].childNodes[0].nodeValue]);var attributes={Icon:!0,href:!0,color:!0};function _parse(xml){var options={},ioptions={};for(var i=0;i<xml.childNodes.length;i++){var e=xml.childNodes[i];var key=e.tagName;if(!attributes[key]){continue}
58var value=e.childNodes[0].nodeValue;if(key==='Icon'){ioptions=_parse(e);if(ioptions.href){options.href=ioptions.href}}else if(key==='href'){options.href=value}else if(key==='color'){options.opacity=parseInt(value.substring(0,2),16)/255.0;options.color='#'+value.substring(6,8)+value.substring(4,6)+value.substring(2,4)}}
59return options}
60var options={};options=_parse(xml);if(latlonbox.getElementsByTagName('rotation')[0]!==undefined){var rotation=latlonbox.getElementsByTagName('rotation')[0].childNodes[0].nodeValue;options.rotation=parseFloat(rotation)}
61return new L.RotatedImageOverlay(options.href,bounds,{opacity:options.opacity,angle:options.rotation})}});L.KMLIcon=L.Icon.extend({options:{iconSize:[32,32],iconAnchor:[16,16],},_setIconStyles:function(img,name){L.Icon.prototype._setIconStyles.apply(this,[img,name])},_createImg:function(src,el){el=el||document.createElement('img');el.onload=this.applyCustomStyles.bind(this,el)
62el.src=src;return el},applyCustomStyles:function(img){var options=this.options;var width=options.iconSize[0];var height=options.iconSize[1];this.options.popupAnchor=[0,(-0.83*height)];if(options.anchorType.x==='fraction')
63img.style.marginLeft=(-options.anchorRef.x*width)+'px';if(options.anchorType.y==='fraction')
64img.style.marginTop=((-(1-options.anchorRef.y)*height)+1)+'px';if(options.anchorType.x==='pixels')
65img.style.marginLeft=(-options.anchorRef.x)+'px';if(options.anchorType.y==='pixels')
66img.style.marginTop=(options.anchorRef.y-height+1)+'px'}});L.KMLMarker=L.Marker.extend({options:{icon:new L.KMLIcon.Default()}});L.RotatedImageOverlay=L.ImageOverlay.extend({options:{angle:0},_reset:function(){L.ImageOverlay.prototype._reset.call(this);this._rotate()},_animateZoom:function(e){L.ImageOverlay.prototype._animateZoom.call(this,e);this._rotate()},_rotate:function(){if(L.DomUtil.TRANSFORM){this._image.style[L.DomUtil.TRANSFORM]+=' rotate('+this.options.angle+'deg)'}else if(L.Browser.ie){var rad=this.options.angle*(Math.PI/180),c
66ostheta=Math.cos(rad),sintheta=Math.sin(rad);this._image.style.filter+=' progid:DXImageTransform.Microsoft.Matrix(sizingMethod=\'auto expand\', M11='+costheta+', M12='+(-sintheta)+', M21='+sintheta+', M22='+costheta+')'}},getBounds:function(){return this._bounds}})

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.