WME WV MapRaid Overlay

Adds a WV MapRaid area overlay.

  1. // ==UserScript==
  2. // @name WME WV MapRaid Overlay
  3. // @namespace https://greatest.deepsurf.us/users/45389
  4. // @version 2018.08.18.001
  5. // @description Adds a WV MapRaid area overlay.
  6. // @author MapOMatic
  7. // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/
  8. // @require https://greatest.deepsurf.us/scripts/24851-wazewrap/code/WazeWrap.js
  9. // @license GNU GPLv3
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. // Enter the state abbreviation:
  17. var _stateAbbr = "WV";
  18.  
  19. // Enter the MapRaid area names and the desired fill colors, in order they appear in the original map legend:
  20. var _areas = {
  21. 'WV-1':{fillColor:'#7cb342'},
  22. 'WV-2':{fillColor:'#f57c00'},
  23. 'WV-3':{fillColor:'#ffea00'},
  24. 'WV-4':{fillColor:'#01579b'}
  25. };
  26.  
  27. var _settingsStoreName = '_wme_' + _stateAbbr + '_mapraid';
  28. var _settings;
  29. var _features;
  30. var _kml;
  31. var _layerName = _stateAbbr + ' MapRaid';
  32. var _layer = null;
  33. var defaultFillOpacity = 0.3;
  34.  
  35. function loadSettingsFromStorage() {
  36. _settings = $.parseJSON(localStorage.getItem(_settingsStoreName));
  37. if(!_settings) {
  38. _settings = {
  39. layerVisible: true,
  40. hiddenAreas: []
  41. };
  42. } else {
  43. _settings.layerVisible = (_settings.layerVisible === true);
  44. _settings.hiddenAreas = _settings.hiddenAreas || [];
  45. }
  46. }
  47.  
  48. function saveSettingsToStorage() {
  49. if (localStorage) {
  50. var settings = {
  51. layerVisible: _layer.visibility,
  52. hiddenAreas: _settings.hiddenAreas
  53. };
  54. localStorage.setItem(_settingsStoreName, JSON.stringify(settings));
  55. }
  56. }
  57.  
  58. function GetFeaturesFromKMLString(strKML) {
  59. var format = new OpenLayers.Format.KML({
  60. 'internalProjection': Waze.map.baseLayer.projection,
  61. 'externalProjection': new OpenLayers.Projection("EPSG:4326")
  62. });
  63. return format.read(strKML);
  64. }
  65.  
  66. function updateDistrictNameDisplay(){
  67. $('.mapraid-region').remove();
  68. if (_layer !== null) {
  69. var mapCenter = new OpenLayers.Geometry.Point(W.map.center.lon,W.map.center.lat);
  70. for (var i=0;i<_layer.features.length;i++){
  71. var feature = _layer.features[i];
  72. var color;
  73. var text = '';
  74. var num;
  75. var url;
  76. if(feature.geometry.containsPoint(mapCenter)) {
  77. text = feature.attributes.name;
  78. color = '#00ffff';
  79. var $div = $('<div>', {id:'mapraid', class:"mapraid-region", style:'display:inline-block;margin-left:10px;', title:'Click to toggle color on/off for this group'})
  80. .css({color:color, cursor:"pointer"})
  81. .click(toggleAreaFill);
  82. var $span = $('<span>').css({display:'inline-block'});
  83. $span.text('MapRaid Area: ' + text).appendTo($div);
  84. $('.location-info-region').parent().append($div);
  85. if (color) {
  86. break;
  87. }
  88. }
  89. }
  90. }
  91. }
  92.  
  93. function toggleAreaFill() {
  94. var text = $('#mapraid span').text();
  95. if (text) {
  96. var match = text.match(/WV-(\d+)/);
  97. if (match.length > 1) {
  98. var group = parseInt(match[1]);
  99. var f = _layer.features[group-1];
  100. var hide = f.attributes.fillOpacity !== 0;
  101. f.attributes.fillOpacity = hide ? 0 : defaultFillOpacity;
  102. var idx = _settings.hiddenAreas.indexOf(group);
  103. if (hide) {
  104. if (idx === -1) _settings.hiddenAreas.push(group);
  105. } else {
  106. if (idx > -1) {
  107. _settings.hiddenAreas.splice(idx,1);
  108. }
  109. }
  110. saveSettingsToStorage();
  111. _layer.redraw();
  112. }
  113. }
  114. }
  115.  
  116.  
  117. function init() {
  118. InstallKML();
  119. loadSettingsFromStorage();
  120. var layerid = 'wme_' + _stateAbbr + '_mapraid';
  121. var _features = GetFeaturesFromKMLString(_kml);
  122. var i = 0;
  123. for(var areaName in _areas) {
  124. _features[i].attributes.name = areaName;
  125. _features[i].attributes.fillColor = _areas[areaName].fillColor;
  126. _features[i].attributes.fillOpacity = _settings.hiddenAreas.indexOf(i+1) > -1 ? 0 : defaultFillOpacity;
  127. i++;
  128. }
  129. var layerStyle = new OpenLayers.StyleMap({
  130. strokeDashstyle: 'solid',
  131. strokeColor: '#ff0000',
  132. strokeOpacity: 0.4,
  133. strokeWidth: 2,
  134. fillOpacity: '${fillOpacity}',
  135. fillColor: '${fillColor}'
  136. });
  137. _layer = new OL.Layer.Vector(_stateAbbr + " MapRaid", {
  138. rendererOptions: { zIndexing: true },
  139. uniqueName: layerid,
  140. shortcutKey: "S+" + 0,
  141. layerGroup: _stateAbbr + '_mapraid',
  142. zIndex: -9999,
  143. displayInLayerSwitcher: true,
  144. visibility: _settings.layerVisible,
  145. styleMap: layerStyle
  146. });
  147. I18n.translations[I18n.locale].layers.name[layerid] = _stateAbbr + " MapRaid";
  148. _layer.addFeatures(_features);
  149. W.map.addLayer(_layer);
  150. W.map.events.register("moveend", null, updateDistrictNameDisplay);
  151. window.addEventListener('beforeunload', function saveOnClose() { saveSettingsToStorage(); }, false);
  152. updateDistrictNameDisplay();
  153.  
  154. // Add the layer checkbox to the Layers menu.
  155. WazeWrap.Interface.AddLayerCheckbox("display", "WV MapRaid", _settings.layerVisible, layerToggled);
  156. }
  157.  
  158. function layerToggled(visible) {
  159. _layer.setVisibility(visible);
  160. saveSettingsToStorage();
  161. }
  162.  
  163. function bootstrap() {
  164. if (W && W.loginManager && W.loginManager.user) {
  165. init();
  166. console.log('WV MR Overlay:', 'Initialized');
  167. } else {
  168. console.log('WV MR Overlay: ', 'Bootstrap failed. Trying again...');
  169. window.setTimeout(() => bootstrap(), 500);
  170. }
  171. }
  172.  
  173. bootstrap();
  174.  
  175. function InstallKML(){
  176. OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date,extractAttributes:!0,kvpAttributes:!1,extractStyles:!1,extractTracks:!1,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(a){this.regExes=
  177. {trimSpace:/^\s*|\s*$/g,removeSpace:/\s*/g,splitSpace:/\s+/,trimComma:/\s*,\s*/g,kmlColor:/(\w{2})(\w{2})(\w{2})(\w{2})/,kmlIconPalette:/root:\/\/icons\/palette-(\d+)(\.\w+)/,straightBracket:/\$\[(.*?)\]/g};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[a])},read:function(a){this.features=[];this.styles={};this.fetched={};return this.parseData(a,{depth:0,styleBaseUrl:this.styleBaseUrl})},parseData:function(a,b){"string"==typeof a&&
  178. (a=OpenLayers.Format.XML.prototype.read.apply(this,[a]));for(var c=["Link","NetworkLink","Style","StyleMap","Placemark"],d=0,e=c.length;d<e;++d){var f=c[d],g=this.getElementsByTagNameNS(a,"*",f);if(0!=g.length)switch(f.toLowerCase()){case "link":case "networklink":this.parseLinks(g,b);break;case "style":this.extractStyles&&this.parseStyles(g,b);break;case "stylemap":this.extractStyles&&this.parseStyleMaps(g,b);break;case "placemark":this.parseFeatures(g,b)}}return this.features},parseLinks:function(a,
  179. b){if(b.depth>=this.maxDepth)return!1;var c=OpenLayers.Util.extend({},b);c.depth++;for(var d=0,e=a.length;d<e;d++){var f=this.parseProperty(a[d],"*","href");f&&!this.fetched[f]&&(this.fetched[f]=!0,(f=this.fetchLink(f))&&this.parseData(f,c))}},fetchLink:function(a){if(a=OpenLayers.Request.GET({url:a,async:!1}))return a.responseText},parseStyles:function(a,b){for(var c=0,d=a.length;c<d;c++){var e=this.parseStyle(a[c]);e&&(this.styles[(b.styleBaseUrl||"")+"#"+e.id]=e)}},parseKmlColor:function(a){var b=
  180. null;a&&(a=a.match(this.regExes.kmlColor))&&(b={color:"#"+a[4]+a[3]+a[2],opacity:parseInt(a[1],16)/255});return b},parseStyle:function(a){for(var b={},c=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"],d,e,f=0,g=c.length;f<g;++f)if(d=c[f],e=this.getElementsByTagNameNS(a,"*",d)[0])switch(d.toLowerCase()){case "linestyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.strokeColor=d.color,b.strokeOpacity=d.opacity;(d=this.parseProperty(e,"*","width"))&&(b.strokeWidth=
  181. d);break;case "polystyle":d=this.parseProperty(e,"*","color");if(d=this.parseKmlColor(d))b.fillOpacity=d.opacity,b.fillColor=d.color;"0"==this.parseProperty(e,"*","fill")&&(b.fillColor="none");"0"==this.parseProperty(e,"*","outline")&&(b.strokeWidth="0");break;case "iconstyle":var h=parseFloat(this.parseProperty(e,"*","scale")||1);d=32*h;var i=32*h,j=this.getElementsByTagNameNS(e,"*","Icon")[0];if(j){var k=this.parseProperty(j,"*","href");if(k){var l=this.parseProperty(j,"*","w"),m=this.parseProperty(j,
  182. "*","h");OpenLayers.String.startsWith(k,"http://maps.google.com/mapfiles/kml")&&(!l&&!m)&&(m=l=64,h/=2);l=l||m;m=m||l;l&&(d=parseInt(l)*h);m&&(i=parseInt(m)*h);if(m=k.match(this.regExes.kmlIconPalette))l=m[1],m=m[2],k=this.parseProperty(j,"*","x"),j=this.parseProperty(j,"*","y"),k="http://maps.google.com/mapfiles/kml/pal"+l+"/icon"+(8*(j?7-j/32:7)+(k?k/32:0))+m;b.graphicOpacity=1;b.externalGraphic=k}}if(e=this.getElementsByTagNameNS(e,"*","hotSpot")[0])k=parseFloat(e.getAttribute("x")),j=parseFloat(e.getAttribute("y")),
  183. l=e.getAttribute("xunits"),"pixels"==l?b.graphicXOffset=-k*h:"insetPixels"==l?b.graphicXOffset=-d+k*h:"fraction"==l&&(b.graphicXOffset=-d*k),e=e.getAttribute("yunits"),"pixels"==e?b.graphicYOffset=-i+j*h+1:"insetPixels"==e?b.graphicYOffset=-(j*h)+1:"fraction"==e&&(b.graphicYOffset=-i*(1-j)+1);b.graphicWidth=d;b.graphicHeight=i;break;case "balloonstyle":(e=OpenLayers.Util.getXmlNodeValue(e))&&(b.balloonStyle=e.replace(this.regExes.straightBracket,"${$1}"));break;case "labelstyle":if(d=this.parseProperty(e,
  184. "*","color"),d=this.parseKmlColor(d))b.fontColor=d.color,b.fontOpacity=d.opacity}!b.strokeColor&&b.fillColor&&(b.strokeColor=b.fillColor);if((a=a.getAttribute("id"))&&b)b.id=a;return b},parseStyleMaps:function(a,b){for(var c=0,d=a.length;c<d;c++)for(var e=a[c],f=this.getElementsByTagNameNS(e,"*","Pair"),e=e.getAttribute("id"),g=0,h=f.length;g<h;g++){var i=f[g],j=this.parseProperty(i,"*","key");(i=this.parseProperty(i,"*","styleUrl"))&&"normal"==j&&(this.styles[(b.styleBaseUrl||"")+"#"+e]=this.styles[(b.styleBaseUrl||
  185. "")+i])}},parseFeatures:function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d],g=this.parseFeature.apply(this,[f]);if(g){this.extractStyles&&(g.attributes&&g.attributes.styleUrl)&&(g.style=this.getStyle(g.attributes.styleUrl,b));if(this.extractStyles){var h=this.getElementsByTagNameNS(f,"*","Style")[0];if(h&&(h=this.parseStyle(h)))g.style=OpenLayers.Util.extend(g.style,h)}if(this.extractTracks){if((f=this.getElementsByTagNameNS(f,this.namespaces.gx,"Track"))&&0<f.length)g={features:[],feature:g},
  186. this.readNode(f[0],g),0<g.features.length&&c.push.apply(c,g.features)}else c.push(g)}else throw"Bad Placemark: "+d;}this.features=this.features.concat(c)},readers:{kml:{when:function(a,b){b.whens.push(OpenLayers.Date.parse(this.getChildValue(a)))},_trackPointAttribute:function(a,b){var c=a.nodeName.split(":").pop();b.attributes[c].push(this.getChildValue(a))}},gx:{Track:function(a,b){var c={whens:[],points:[],angles:[]};if(this.trackAttributes){var d;c.attributes={};for(var e=0,f=this.trackAttributes.length;e<
  187. f;++e)d=this.trackAttributes[e],c.attributes[d]=[],d in this.readers.kml||(this.readers.kml[d]=this.readers.kml._trackPointAttribute)}this.readChildNodes(a,c);if(c.whens.length!==c.points.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:coord ("+c.points.length+") elements.");var g=0<c.angles.length;if(g&&c.whens.length!==c.angles.length)throw Error("gx:Track with unequal number of when ("+c.whens.length+") and gx:angles ("+c.angles.length+") elements.");for(var h,
  188. i,e=0,f=c.whens.length;e<f;++e){h=b.feature.clone();h.fid=b.feature.fid||b.feature.id;i=c.points[e];h.geometry=i;"z"in i&&(h.attributes.altitude=i.z);this.internalProjection&&this.externalProjection&&h.geometry.transform(this.externalProjection,this.internalProjection);if(this.trackAttributes){i=0;for(var j=this.trackAttributes.length;i<j;++i)h.attributes[d]=c.attributes[this.trackAttributes[i]][e]}h.attributes.when=c.whens[e];h.attributes.trackId=b.feature.id;g&&(i=c.angles[e],h.attributes.heading=
  189. parseFloat(i[0]),h.attributes.tilt=parseFloat(i[1]),h.attributes.roll=parseFloat(i[2]));b.features.push(h)}},coord:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/),d=new OpenLayers.Geometry.Point(c[0],c[1]);2<c.length&&(d.z=parseFloat(c[2]));b.points.push(d)},angles:function(a,b){var c=this.getChildValue(a).replace(this.regExes.trimSpace,"").split(/\s+/);b.angles.push(c)}}},parseFeature:function(a){for(var b=["MultiGeometry","Polygon","LineString","Point"],
  190. c,d,e,f=0,g=b.length;f<g;++f)if(c=b[f],this.internalns=a.namespaceURI?a.namespaceURI:this.kmlns,d=this.getElementsByTagNameNS(a,this.internalns,c),0<d.length){if(b=this.parseGeometry[c.toLowerCase()])e=b.apply(this,[d[0]]),this.internalProjection&&this.externalProjection&&e.transform(this.externalProjection,this.internalProjection);else throw new TypeError("Unsupported geometry type: "+c);break}var h;this.extractAttributes&&(h=this.parseAttributes(a));c=new OpenLayers.Feature.Vector(e,h);a=a.getAttribute("id")||
  191. a.getAttribute("name");null!=a&&(c.fid=a);return c},getStyle:function(a,b){var c=OpenLayers.Util.removeTail(a),d=OpenLayers.Util.extend({},b);d.depth++;d.styleBaseUrl=c;!this.styles[a]&&!OpenLayers.String.startsWith(a,"#")&&d.depth<=this.maxDepth&&!this.fetched[c]&&(c=this.fetchLink(c))&&this.parseData(c,d);return OpenLayers.Util.extend({},this.styles[a])},parseGeometry:{point:function(a){var b=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),a=[];if(0<b.length)var c=b[0].firstChild.nodeValue,
  192. c=c.replace(this.regExes.removeSpace,""),a=c.split(",");b=null;if(1<a.length)2==a.length&&(a[2]=null),b=new OpenLayers.Geometry.Point(a[0],a[1],a[2]);else throw"Bad coordinate string: "+c;return b},linestring:function(a,b){var c=this.getElementsByTagNameNS(a,this.internalns,"coordinates"),d=null;if(0<c.length){for(var c=this.getChildValue(c[0]),c=c.replace(this.regExes.trimSpace,""),c=c.replace(this.regExes.trimComma,","),d=c.split(this.regExes.splitSpace),e=d.length,f=Array(e),g,h,i=0;i<e;++i)if(g=
  193. d[i].split(","),h=g.length,1<h)2==g.length&&(g[2]=null),f[i]=new OpenLayers.Geometry.Point(g[0],g[1],g[2]);else throw"Bad LineString point coordinates: "+d[i];if(e)d=b?new OpenLayers.Geometry.LinearRing(f):new OpenLayers.Geometry.LineString(f);else throw"Bad LineString coordinates: "+c;}return d},polygon:function(a){var a=this.getElementsByTagNameNS(a,this.internalns,"LinearRing"),b=a.length,c=Array(b);if(0<b)for(var d=0,e=a.length;d<e;++d)if(b=this.parseGeometry.linestring.apply(this,[a[d],!0]))c[d]=
  194. b;else throw"Bad LinearRing geometry: "+d;return new OpenLayers.Geometry.Polygon(c)},multigeometry:function(a){for(var b,c=[],d=a.childNodes,e=0,f=d.length;e<f;++e)a=d[e],1==a.nodeType&&(b=this.parseGeometry[(a.prefix?a.nodeName.split(":")[1]:a.nodeName).toLowerCase()])&&c.push(b.apply(this,[a]));return new OpenLayers.Geometry.Collection(c)}},parseAttributes:function(a){var b={},c=a.getElementsByTagName("ExtendedData");c.length&&(b=this.parseExtendedData(c[0]));for(var d,e,f,a=a.childNodes,c=0,g=
  195. a.length;c<g;++c)if(d=a[c],1==d.nodeType&&(e=d.childNodes,1<=e.length&&3>=e.length)){switch(e.length){case 1:f=e[0];break;case 2:f=e[0];e=e[1];f=3==f.nodeType||4==f.nodeType?f:e;break;default:f=e[1]}if(3==f.nodeType||4==f.nodeType)if(d=d.prefix?d.nodeName.split(":")[1]:d.nodeName,f=OpenLayers.Util.getXmlNodeValue(f))f=f.replace(this.regExes.trimSpace,""),b[d]=f}return b},parseExtendedData:function(a){var b={},c,d,e,f,g=a.getElementsByTagName("Data");c=0;for(d=g.length;c<d;c++){e=g[c];f=e.getAttribute("name");
  196. var h={},i=e.getElementsByTagName("value");i.length&&(h.value=this.getChildValue(i[0]));this.kvpAttributes?b[f]=h.value:(e=e.getElementsByTagName("displayName"),e.length&&(h.displayName=this.getChildValue(e[0])),b[f]=h)}a=a.getElementsByTagName("SimpleData");c=0;for(d=a.length;c<d;c++)h={},e=a[c],f=e.getAttribute("name"),h.value=this.getChildValue(e),this.kvpAttributes?b[f]=h.value:(h.displayName=f,b[f]=h);return b},parseProperty:function(a,b,c){var d,a=this.getElementsByTagNameNS(a,b,c);try{d=OpenLayers.Util.getXmlNodeValue(a[0])}catch(e){d=
  197. null}return d},write:function(a){OpenLayers.Util.isArray(a)||(a=[a]);for(var b=this.createElementNS(this.kmlns,"kml"),c=this.createFolderXML(),d=0,e=a.length;d<e;++d)c.appendChild(this.createPlacemarkXML(a[d]));b.appendChild(c);return OpenLayers.Format.XML.prototype.write.apply(this,[b])},createFolderXML:function(){var a=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var b=this.createElementNS(this.kmlns,"name"),c=this.createTextNode(this.foldersName);b.appendChild(c);a.appendChild(b)}this.foldersDesc&&
  198. (b=this.createElementNS(this.kmlns,"description"),c=this.createTextNode(this.foldersDesc),b.appendChild(c),a.appendChild(b));return a},createPlacemarkXML:function(a){var b=this.createElementNS(this.kmlns,"name");b.appendChild(this.createTextNode(a.style&&a.style.label?a.style.label:a.attributes.name||a.id));var c=this.createElementNS(this.kmlns,"description");c.appendChild(this.createTextNode(a.attributes.description||this.placemarksDesc));var d=this.createElementNS(this.kmlns,"Placemark");null!=
  199. a.fid&&d.setAttribute("id",a.fid);d.appendChild(b);d.appendChild(c);b=this.buildGeometryNode(a.geometry);d.appendChild(b);a.attributes&&(a=this.buildExtendedData(a.attributes))&&d.appendChild(a);return d},buildGeometryNode:function(a){var b=a.CLASS_NAME,b=this.buildGeometry[b.substring(b.lastIndexOf(".")+1).toLowerCase()],c=null;b&&(c=b.apply(this,[a]));return c},buildGeometry:{point:function(a){var b=this.createElementNS(this.kmlns,"Point");b.appendChild(this.buildCoordinatesNode(a));return b},multipoint:function(a){return this.buildGeometry.collection.apply(this,
  200. [a])},linestring:function(a){var b=this.createElementNS(this.kmlns,"LineString");b.appendChild(this.buildCoordinatesNode(a));return b},multilinestring:function(a){return this.buildGeometry.collection.apply(this,[a])},linearring:function(a){var b=this.createElementNS(this.kmlns,"LinearRing");b.appendChild(this.buildCoordinatesNode(a));return b},polygon:function(a){for(var b=this.createElementNS(this.kmlns,"Polygon"),a=a.components,c,d,e=0,f=a.length;e<f;++e)c=0==e?"outerBoundaryIs":"innerBoundaryIs",
  201. c=this.createElementNS(this.kmlns,c),d=this.buildGeometry.linearring.apply(this,[a[e]]),c.appendChild(d),b.appendChild(c);return b},multipolygon:function(a){return this.buildGeometry.collection.apply(this,[a])},collection:function(a){for(var b=this.createElementNS(this.kmlns,"MultiGeometry"),c,d=0,e=a.components.length;d<e;++d)(c=this.buildGeometryNode.apply(this,[a.components[d]]))&&b.appendChild(c);return b}},buildCoordinatesNode:function(a){var b=this.createElementNS(this.kmlns,"coordinates"),
  202. c;if(c=a.components){for(var d=c.length,e=Array(d),f=0;f<d;++f)a=c[f],e[f]=this.buildCoordinates(a);c=e.join(" ")}else c=this.buildCoordinates(a);c=this.createTextNode(c);b.appendChild(c);return b},buildCoordinates:function(a){this.internalProjection&&this.externalProjection&&(a=a.clone(),a.transform(this.internalProjection,this.externalProjection));return a.x+","+a.y},buildExtendedData:function(a){var b=this.createElementNS(this.kmlns,"ExtendedData"),c;for(c in a)if(a[c]&&"name"!=c&&"description"!=
  203. c&&"styleUrl"!=c){var d=this.createElementNS(this.kmlns,"Data");d.setAttribute("name",c);var e=this.createElementNS(this.kmlns,"value");if("object"==typeof a[c]){if(a[c].value&&e.appendChild(this.createTextNode(a[c].value)),a[c].displayName){var f=this.createElementNS(this.kmlns,"displayName");f.appendChild(this.getXMLDoc().createCDATASection(a[c].displayName));d.appendChild(f)}}else e.appendChild(this.createTextNode(a[c]));d.appendChild(e);b.appendChild(d)}return this.isSimpleContent(b)?null:b},
  204. CLASS_NAME:"OpenLayers.Format.KML"});
  205.  
  206. _kml = `<?xml version="1.0" encoding="UTF-8"?>
  207. <kml xmlns="http://www.opengis.net/kml/2.2">
  208. <Document>
  209. <name>WVMR2018</name>
  210. <description/>
  211. <Style id="poly-000000-1200-77-nodesc-normal">
  212. <LineStyle>
  213. <color>ff000000</color>
  214. <width>1.2</width>
  215. </LineStyle>
  216. <PolyStyle>
  217. <color>4d000000</color>
  218. <fill>1</fill>
  219. <outline>1</outline>
  220. </PolyStyle>
  221. <BalloonStyle>
  222. <text><![CDATA[<h3>$[name]</h3>]]></text>
  223. </BalloonStyle>
  224. </Style>
  225. <Style id="poly-000000-1200-77-nodesc-highlight">
  226. <LineStyle>
  227. <color>ff000000</color>
  228. <width>1.8</width>
  229. </LineStyle>
  230. <PolyStyle>
  231. <color>4d000000</color>
  232. <fill>1</fill>
  233. <outline>1</outline>
  234. </PolyStyle>
  235. <BalloonStyle>
  236. <text><![CDATA[<h3>$[name]</h3>]]></text>
  237. </BalloonStyle>
  238. </Style>
  239. <StyleMap id="poly-000000-1200-77-nodesc">
  240. <Pair>
  241. <key>normal</key>
  242. <styleUrl>#poly-000000-1200-77-nodesc-normal</styleUrl>
  243. </Pair>
  244. <Pair>
  245. <key>highlight</key>
  246. <styleUrl>#poly-000000-1200-77-nodesc-highlight</styleUrl>
  247. </Pair>
  248. </StyleMap>
  249. <Style id="poly-000000-2000-0-normal">
  250. <LineStyle>
  251. <color>ff000000</color>
  252. <width>2</width>
  253. </LineStyle>
  254. <PolyStyle>
  255. <color>00000000</color>
  256. <fill>1</fill>
  257. <outline>1</outline>
  258. </PolyStyle>
  259. </Style>
  260. <Style id="poly-000000-2000-0-highlight">
  261. <LineStyle>
  262. <color>ff000000</color>
  263. <width>3</width>
  264. </LineStyle>
  265. <PolyStyle>
  266. <color>00000000</color>
  267. <fill>1</fill>
  268. <outline>1</outline>
  269. </PolyStyle>
  270. </Style>
  271. <StyleMap id="poly-000000-2000-0">
  272. <Pair>
  273. <key>normal</key>
  274. <styleUrl>#poly-000000-2000-0-normal</styleUrl>
  275. </Pair>
  276. <Pair>
  277. <key>highlight</key>
  278. <styleUrl>#poly-000000-2000-0-highlight</styleUrl>
  279. </Pair>
  280. </StyleMap>
  281. <Style id="poly-A1C2FA-1200-77-nodesc-normal">
  282. <LineStyle>
  283. <color>fffac2a1</color>
  284. <width>1.2</width>
  285. </LineStyle>
  286. <PolyStyle>
  287. <color>4dfac2a1</color>
  288. <fill>1</fill>
  289. <outline>1</outline>
  290. </PolyStyle>
  291. <BalloonStyle>
  292. <text><![CDATA[<h3>$[name]</h3>]]></text>
  293. </BalloonStyle>
  294. </Style>
  295. <Style id="poly-A1C2FA-1200-77-nodesc-highlight">
  296. <LineStyle>
  297. <color>fffac2a1</color>
  298. <width>1.8</width>
  299. </LineStyle>
  300. <PolyStyle>
  301. <color>4dfac2a1</color>
  302. <fill>1</fill>
  303. <outline>1</outline>
  304. </PolyStyle>
  305. <BalloonStyle>
  306. <text><![CDATA[<h3>$[name]</h3>]]></text>
  307. </BalloonStyle>
  308. </Style>
  309. <StyleMap id="poly-A1C2FA-1200-77-nodesc">
  310. <Pair>
  311. <key>normal</key>
  312. <styleUrl>#poly-A1C2FA-1200-77-nodesc-normal</styleUrl>
  313. </Pair>
  314. <Pair>
  315. <key>highlight</key>
  316. <styleUrl>#poly-A1C2FA-1200-77-nodesc-highlight</styleUrl>
  317. </Pair>
  318. </StyleMap>
  319. <Style id="poly-CE93D8-1200-77-nodesc-normal">
  320. <LineStyle>
  321. <color>ffd893ce</color>
  322. <width>1.2</width>
  323. </LineStyle>
  324. <PolyStyle>
  325. <color>4dd893ce</color>
  326. <fill>1</fill>
  327. <outline>1</outline>
  328. </PolyStyle>
  329. <BalloonStyle>
  330. <text><![CDATA[<h3>$[name]</h3>]]></text>
  331. </BalloonStyle>
  332. </Style>
  333. <Style id="poly-CE93D8-1200-77-nodesc-highlight">
  334. <LineStyle>
  335. <color>ffd893ce</color>
  336. <width>1.8</width>
  337. </LineStyle>
  338. <PolyStyle>
  339. <color>4dd893ce</color>
  340. <fill>1</fill>
  341. <outline>1</outline>
  342. </PolyStyle>
  343. <BalloonStyle>
  344. <text><![CDATA[<h3>$[name]</h3>]]></text>
  345. </BalloonStyle>
  346. </Style>
  347. <StyleMap id="poly-CE93D8-1200-77-nodesc">
  348. <Pair>
  349. <key>normal</key>
  350. <styleUrl>#poly-CE93D8-1200-77-nodesc-normal</styleUrl>
  351. </Pair>
  352. <Pair>
  353. <key>highlight</key>
  354. <styleUrl>#poly-CE93D8-1200-77-nodesc-highlight</styleUrl>
  355. </Pair>
  356. </StyleMap>
  357. <Style id="poly-F48FB1-1200-77-nodesc-normal">
  358. <LineStyle>
  359. <color>ffb18ff4</color>
  360. <width>1.2</width>
  361. </LineStyle>
  362. <PolyStyle>
  363. <color>4db18ff4</color>
  364. <fill>1</fill>
  365. <outline>1</outline>
  366. </PolyStyle>
  367. <BalloonStyle>
  368. <text><![CDATA[<h3>$[name]</h3>]]></text>
  369. </BalloonStyle>
  370. </Style>
  371. <Style id="poly-F48FB1-1200-77-nodesc-highlight">
  372. <LineStyle>
  373. <color>ffb18ff4</color>
  374. <width>1.8</width>
  375. </LineStyle>
  376. <PolyStyle>
  377. <color>4db18ff4</color>
  378. <fill>1</fill>
  379. <outline>1</outline>
  380. </PolyStyle>
  381. <BalloonStyle>
  382. <text><![CDATA[<h3>$[name]</h3>]]></text>
  383. </BalloonStyle>
  384. </Style>
  385. <StyleMap id="poly-F48FB1-1200-77-nodesc">
  386. <Pair>
  387. <key>normal</key>
  388. <styleUrl>#poly-F48FB1-1200-77-nodesc-normal</styleUrl>
  389. </Pair>
  390. <Pair>
  391. <key>highlight</key>
  392. <styleUrl>#poly-F48FB1-1200-77-nodesc-highlight</styleUrl>
  393. </Pair>
  394. </StyleMap>
  395. <Style id="poly-FADA80-1200-77-nodesc-normal">
  396. <LineStyle>
  397. <color>ff80dafa</color>
  398. <width>1.2</width>
  399. </LineStyle>
  400. <PolyStyle>
  401. <color>4d80dafa</color>
  402. <fill>1</fill>
  403. <outline>1</outline>
  404. </PolyStyle>
  405. <BalloonStyle>
  406. <text><![CDATA[<h3>$[name]</h3>]]></text>
  407. </BalloonStyle>
  408. </Style>
  409. <Style id="poly-FADA80-1200-77-nodesc-highlight">
  410. <LineStyle>
  411. <color>ff80dafa</color>
  412. <width>1.8</width>
  413. </LineStyle>
  414. <PolyStyle>
  415. <color>4d80dafa</color>
  416. <fill>1</fill>
  417. <outline>1</outline>
  418. </PolyStyle>
  419. <BalloonStyle>
  420. <text><![CDATA[<h3>$[name]</h3>]]></text>
  421. </BalloonStyle>
  422. </Style>
  423. <StyleMap id="poly-FADA80-1200-77-nodesc">
  424. <Pair>
  425. <key>normal</key>
  426. <styleUrl>#poly-FADA80-1200-77-nodesc-normal</styleUrl>
  427. </Pair>
  428. <Pair>
  429. <key>highlight</key>
  430. <styleUrl>#poly-FADA80-1200-77-nodesc-highlight</styleUrl>
  431. </Pair>
  432. </StyleMap>
  433. <Folder>
  434. <name>Group 1</name>
  435. <Placemark>
  436. <name>Morgantown</name>
  437. <styleUrl>#poly-CE93D8-1200-77-nodesc</styleUrl>
  438. <Polygon>
  439. <outerBoundaryIs>
  440. <LinearRing>
  441. <tessellate>1</tessellate>
  442. <coordinates>
  443. -81.0790092,39.5070295,0
  444. -79.9754089,38.7940213,0
  445. -78.8874035,39.270106,0
  446. -79.1536834,39.4112557,0
  447. -79.4869571,39.205194,0
  448. -79.4767589,39.720313,0
  449. -80.5194274,39.720636,0
  450. -80.5190792,40.638034,0
  451. -80.6659783,40.5869608,0
  452. -80.6044787,40.4490158,0
  453. -80.8760748,39.6263313,0
  454. -81.0790092,39.5070295,0
  455. </coordinates>
  456. </LinearRing>
  457. </outerBoundaryIs>
  458. </Polygon>
  459. </Placemark>
  460. </Folder>
  461. <Folder>
  462. <name>Group 2</name>
  463. <Placemark>
  464. <name>Parkersburg</name>
  465. <styleUrl>#poly-A1C2FA-1200-77-nodesc</styleUrl>
  466. <Polygon>
  467. <outerBoundaryIs>
  468. <LinearRing>
  469. <tessellate>1</tessellate>
  470. <coordinates>
  471. -81.8379481,38.9340525,0
  472. -80.934687,38.3298255,0
  473. -80.6540282,38.2133711,0
  474. -79.9754947,38.7940046,0
  475. -81.0790092,39.5070295,0
  476. -81.356986,39.3424096,0
  477. -81.4466171,39.4096054,0
  478. -81.5572929,39.3391523,0
  479. -81.5699866,39.2680526,0
  480. -81.6558789,39.277728,0
  481. -81.6955432,39.2529737,0
  482. -81.6900035,39.2348238,0
  483. -81.6940772,39.2219922,0
  484. -81.7200707,39.2170724,0
  485. -81.7332712,39.197386,0
  486. -81.7555478,39.1808917,0
  487. -81.7432943,39.1423013,0
  488. -81.7469782,39.0957461,0
  489. -81.7725312,39.0779451,0
  490. -81.7812876,39.0334831,0
  491. -81.7648248,39.0192196,0
  492. -81.765888,38.9906842,0
  493. -81.7815337,38.9653013,0
  494. -81.7558418,38.9339127,0
  495. -81.762369,38.9244883,0
  496. -81.7848637,38.9256894,0
  497. -81.812257,38.9453254,0
  498. -81.8284509,38.944563,0
  499. -81.8379481,38.9340525,0
  500. </coordinates>
  501. </LinearRing>
  502. </outerBoundaryIs>
  503. </Polygon>
  504. </Placemark>
  505. </Folder>
  506. <Folder>
  507. <name>Group 3</name>
  508. <Placemark>
  509. <name>Charleston</name>
  510. <styleUrl>#poly-F48FB1-1200-77-nodesc</styleUrl>
  511. <Polygon>
  512. <outerBoundaryIs>
  513. <LinearRing>
  514. <tessellate>1</tessellate>
  515. <coordinates>
  516. -81.8379481,38.9340525,0
  517. -81.8420086,38.9281314,0
  518. -81.8473525,38.9067202,0
  519. -81.8655693,38.8862796,0
  520. -81.8951048,38.8741184,0
  521. -81.9251772,38.8892154,0
  522. -81.9280603,38.8957294,0
  523. -81.9242145,38.9044413,0
  524. -81.911646,38.9159233,0
  525. -81.975164,38.991981,0
  526. -82.0067826,39.0299322,0
  527. -82.0239137,39.0296405,0
  528. -82.0397344,39.0209434,0
  529. -82.0445864,39.0022186,0
  530. -82.0734372,38.9831024,0
  531. -82.1457839,38.8864052,0
  532. -82.1392102,38.8716187,0
  533. -82.1398478,38.8517534,0
  534. -82.153478,38.831004,0
  535. -82.1905091,38.8132907,0
  536. -82.2216301,38.7864173,0
  537. -82.2163125,38.768693,0
  538. -82.197372,38.7568171,0
  539. -82.1819978,38.7069224,0
  540. -82.1910634,38.6842728,0
  541. -82.1721304,38.6183804,0
  542. -82.1767502,38.6004038,0
  543. -82.220535,38.5912344,0
  544. -82.2715331,38.5944793,0
  545. -82.324061,38.4483641,0
  546. -82.5498581,38.4022978,0
  547. -82.5937316,38.4209048,0
  548. -82.5906938,38.3408231,0
  549. -82.5773293,38.328798,0
  550. -82.5713497,38.3154255,0
  551. -82.5825247,38.2989656,0
  552. -82.5784387,38.2819365,0
  553. -82.5742561,38.2749108,0
  554. -82.5737519,38.2659327,0
  555. -82.5848394,38.2461818,0
  556. -82.6022928,38.2470457,0
  557. -82.6118749,38.2317862,0
  558. -82.5980882,38.2175815,0
  559. -82.5993723,38.1968869,0
  560. -82.6038089,38.1887891,0
  561. -82.6127825,38.1706357,0
  562. -82.6377165,38.171305,0
  563. -82.6436858,38.1676497,0
  564. -82.6419772,38.1611169,0
  565. -82.6386717,38.153243,0
  566. -82.634208,38.1376736,0
  567. -82.6211184,38.1329934,0
  568. -82.6176412,38.1208307,0
  569. -82.6043366,38.1205408,0
  570. -82.5854528,38.1079057,0
  571. -82.5846328,38.1024229,0
  572. -82.5847092,38.0966236,0
  573. -82.5840038,38.0919822,0
  574. -82.5731097,38.0823265,0
  575. -82.5668569,38.0816257,0
  576. -82.5639634,38.0792445,0
  577. -82.5604946,38.0737387,0
  578. -82.5504669,38.0701591,0
  579. -82.5489579,38.0635215,0
  580. -82.5445311,38.0590462,0
  581. -82.5444159,38.0544534,0
  582. -82.5371437,38.0431414,0
  583. -82.5378379,38.0361264,0
  584. -82.5340334,38.0313907,0
  585. -82.5260819,38.0265837,0
  586. -82.525971,38.0203833,0
  587. -82.5215439,38.0112272,0
  588. -82.5162083,38.0068779,0
  589. -82.5154935,38.0051448,0
  590. -82.5189111,38.0021642,0
  591. -82.5168355,37.9996909,0
  592. -82.5005832,37.9989369,0
  593. -82.4873469,37.998139,0
  594. -82.486838,37.9921808,0
  595. -82.4828171,37.9839165,0
  596. -82.474175,37.9864633,0
  597. -82.4654292,37.984251,0
  598. -82.4643316,37.9810439,0
  599. -82.4687459,37.9732092,0
  600. -82.4830666,37.9720187,0
  601. -82.4842854,37.9640548,0
  602. -82.4717037,37.9596294,0
  603. -82.4734473,37.9567336,0
  604. -82.4777068,37.9525662,0
  605. -82.4819337,37.9485624,0
  606. -82.4870403,37.9455292,0
  607. -82.4975964,37.9458923,0
  608. -82.4965639,37.9414745,0
  609. -82.4909812,37.9390016,0
  610. -82.4917464,37.9358836,0
  611. -82.4986836,37.9370938,0
  612. -82.4982243,37.9280065,0
  613. -82.4892814,37.9264504,0
  614. -82.4803643,37.9252333,0
  615. -82.4881939,37.9178571,0
  616. -82.4804223,37.9150208,0
  617. -82.4746919,37.909433,0
  618. -82.4747328,37.9051646,0
  619. -82.4700944,37.9007248,0
  620. -82.4693139,37.9110778,0
  621. -82.4675805,37.9135673,0
  622. -82.4630833,37.9147541,0
  623. -82.459582,37.910085,0
  624. -82.4530941,37.9088721,0
  625. -82.4380551,37.8996099,0
  626. -82.434604,37.8947492,0
  627. -82.4317354,37.8901074,0
  628. -82.4229236,37.8858282,0
  629. -82.4189317,37.8828316,0
  630. -82.4190164,37.8781933,0
  631. -82.4184996,37.8737943,0
  632. -82.4180616,37.8713741,0
  633. -82.4148392,37.8689781,0
  634. -82.4101578,37.8684791,0
  635. -82.4085199,37.8670744,0
  636. -82.4121821,37.8647772,0
  637. -82.4237101,37.8632348,0
  638. -82.4231328,37.8605109,0
  639. -82.416715,37.8555511,0
  640. -82.417847,37.8514254,0
  641. -82.3576905,37.7938226,0
  642. -82.3482912,37.7878115,0
  643. -82.3395366,37.7848606,0
  644. -82.3379916,37.7767203,0
  645. -82.3335288,37.7745496,0
  646. -82.3264045,37.7757708,0
  647. -82.3234857,37.7750922,0
  648. -82.3229696,37.7733281,0
  649. -82.325886,37.7706142,0
  650. -82.3303453,37.7687145,0
  651. -82.3334275,37.7655937,0
  652. -82.3306737,37.762882,0
  653. -82.3269672,37.762436,0
  654. -82.3190484,37.764995,0
  655. -82.3127444,37.7652079,0
  656. -82.311123,37.7631233,0
  657. -82.3127724,37.7615325,0
  658. -82.3174445,37.7598437,0
  659. -82.3204799,37.7572802,0
  660. -82.3217443,37.7510846,0
  661. -82.3274915,37.7489061,0
  662. -82.3214372,37.734664,0
  663. -82.3187414,37.7321055,0
  664. -82.3164643,37.7228815,0
  665. -82.3113123,37.7176363,0
  666. -82.3110958,37.7131379,0
  667. -82.3059637,37.706364,0
  668. -82.301493,37.7059211,0
  669. -82.2974223,37.7029643,0
  670. -82.2968339,37.7012268,0
  671. -82.2978244,37.6995513,0
  672. -82.3012644,37.6974738,0
  673. -82.3032091,37.6943543,0
  674. -82.3013373,37.6903394,0
  675. -82.2974005,37.6871654,0
  676. -82.2969942,37.6848673,0
  677. -82.2993143,37.6822662,0
  678. -82.2973241,37.6775735,0
  679. -82.294851,37.6778611,0
  680. -82.2943092,37.6764505,0
  681. -82.2946848,37.6712853,0
  682. -82.2903939,37.6687038,0
  683. -82.2876911,37.6683642,0
  684. -82.2821813,37.6745637,0
  685. -82.2698292,37.6644953,0
  686. -82.2584304,37.6579462,0
  687. -82.2541726,37.6577574,0
  688. -82.247714,37.6602339,0
  689. -82.2402895,37.6619248,0
  690. -82.2348441,37.6600433,0
  691. -82.2274262,37.6542733,0
  692. -82.2239188,37.6508876,0
  693. -82.2230843,37.6453393,0
  694. -82.2154079,37.641174,0
  695. -82.2155893,37.637057,0
  696. -82.2174972,37.6334447,0
  697. -82.2141037,37.6266277,0
  698. -82.2109219,37.6253653,0
  699. -82.2038723,37.6267825,0
  700. -82.1966401,37.6277129,0
  701. -82.1923042,37.6264462,0
  702. -82.1872374,37.6285345,0
  703. -82.1903162,37.6465127,0
  704. -82.1873763,37.6489555,0
  705. -82.1780628,37.649762,0
  706. -82.1743704,37.6482482,0
  707. -82.1740244,37.6459,0
  708. -82.1753934,37.6432425,0
  709. -82.176446,37.6395188,0
  710. -82.1720063,37.6337553,0
  711. -82.173255,37.6303848,0
  712. -82.1826185,37.6247318,0
  713. -82.1777415,37.6190665,0
  714. -82.1755406,37.6191571,0
  715. -82.1663317,37.622057,0
  716. -82.164222,37.6199705,0
  717. -82.1713331,37.6123985,0
  718. -82.1671884,37.6067722,0
  719. -82.1576957,37.6075551,0
  720. -82.1575936,37.5922563,0
  721. -82.1479489,37.5898112,0
  722. -82.1463404,37.5911778,0
  723. -82.1408917,37.5943183,0
  724. -82.1341986,37.5927788,0
  725. -82.1311123,37.5909238,0
  726. -82.1266586,37.5763306,0
  727. -82.1309694,37.5719028,0
  728. -82.1057812,37.5565136,0
  729. -80.934687,38.3298255,0
  730. -81.8379481,38.9340525,0
  731. </coordinates>
  732. </LinearRing>
  733. </outerBoundaryIs>
  734. </Polygon>
  735. </Placemark>
  736. </Folder>
  737. <Folder>
  738. <name>Group 4</name>
  739. <Placemark>
  740. <name>Beckley</name>
  741. <styleUrl>#poly-FADA80-1200-77-nodesc</styleUrl>
  742. <Polygon>
  743. <outerBoundaryIs>
  744. <LinearRing>
  745. <tessellate>1</tessellate>
  746. <coordinates>
  747. -80.934687,38.3298255,0
  748. -82.1058668,37.5567155,0
  749. -82.077558,37.5394584,0
  750. -81.969343,37.5335557,0
  751. -81.9957126,37.4690636,0
  752. -81.9840722,37.4547942,0
  753. -81.9780325,37.45662,0
  754. -81.9752422,37.4563344,0
  755. -81.9737816,37.4551669,0
  756. -81.9728775,37.4535134,0
  757. -81.9692242,37.4513647,0
  758. -81.9704459,37.4493448,0
  759. -81.9707007,37.4479797,0
  760. -81.969365,37.4466462,0
  761. -81.9674232,37.446773,0
  762. -81.9569947,37.4477248,0
  763. -81.9486909,37.4442964,0
  764. -81.945859,37.4401824,0
  765. -81.9421479,37.4393652,0
  766. -81.9370428,37.4391959,0
  767. -81.9366602,37.4385166,0
  768. -81.9355947,37.4378736,0
  769. -81.9359239,37.4366939,0
  770. -81.9376264,37.4362638,0
  771. -81.9384283,37.4347482,0
  772. -81.9370281,37.4329435,0
  773. -81.9382189,37.4326055,0
  774. -81.9394417,37.4308732,0
  775. -81.9407285,37.4288739,0
  776. -81.9393111,37.4220978,0
  777. -81.9329364,37.4152589,0
  778. -81.9313829,37.4146926,0
  779. -81.9283274,37.4144839,0
  780. -81.9279326,37.4130481,0
  781. -81.9245088,37.4104989,0
  782. -81.9246041,37.4095517,0
  783. -81.9250093,37.4075552,0
  784. -81.9278367,37.4070392,0
  785. -81.9303584,37.4054618,0
  786. -81.9312176,37.4016761,0
  787. -81.9283444,37.3986216,0
  788. -81.930194,37.3974902,0
  789. -81.929387,37.3939999,0
  790. -81.9300904,37.393054,0
  791. -81.9327753,37.3918959,0
  792. -81.8620981,37.30493,0
  793. -81.8539667,37.3007305,0
  794. -81.815946,37.2806163,0
  795. -81.8150039,37.2803221,0
  796. -81.8134838,37.2810033,0
  797. -81.8101001,37.2825363,0
  798. -81.807195,37.2832802,0
  799. -81.8054616,37.2849386,0
  800. -81.8041406,37.2859336,0
  801. -81.7931299,37.2832449,0
  802. -81.7896279,37.2849011,0
  803. -81.7826926,37.2830059,0
  804. -81.7795332,37.2802672,0
  805. -81.776889,37.2762992,0
  806. -81.7692823,37.2738061,0
  807. -81.7549183,37.2766852,0
  808. -81.7553776,37.2700144,0
  809. -81.7545811,37.2681474,0
  810. -81.7456777,37.2640248,0
  811. -81.7400487,37.257888,0
  812. -81.7411063,37.2507233,0
  813. -81.7435699,37.242956,0
  814. -81.7364408,37.2385263,0
  815. -81.7334305,37.2382366,0
  816. -81.7308492,37.2402018,0
  817. -81.7295492,37.2401689,0
  818. -81.7282365,37.2396931,0
  819. -81.7245384,37.2406208,0
  820. -81.722807,37.240426,0
  821. -81.7221766,37.2387382,0
  822. -81.72083,37.2390868,0
  823. -81.7196817,37.2386223,0
  824. -81.7184151,37.2355751,0
  825. -81.7165687,37.234674,0
  826. -81.7162234,37.233965,0
  827. -81.7163054,37.2315906,0
  828. -81.7156112,37.2305319,0
  829. -81.7159393,37.2290296,0
  830. -81.7116321,37.2273617,0
  831. -81.7107153,37.2257279,0
  832. -81.7085385,37.2254673,0
  833. -81.707704,37.223921,0
  834. -81.7062066,37.2243822,0
  835. -81.7041562,37.2230492,0
  836. -81.7040895,37.2216134,0
  837. -81.699236,37.2189466,0
  838. -81.6888777,37.2135162,0
  839. -81.687255,37.2134692,0
  840. -81.6867563,37.2132386,0
  841. -81.6865098,37.2123845,0
  842. -81.5584228,37.2074359,0
  843. -81.4735258,37.2563969,0
  844. -81.4735778,37.2569195,0
  845. -81.4732837,37.2570711,0
  846. -81.4726387,37.2570312,0
  847. -81.4720193,37.2569055,0
  848. -81.4714227,37.2569076,0
  849. -81.4713126,37.256955,0
  850. -81.4706211,37.2572567,0
  851. -81.4702487,37.2574069,0
  852. -81.4595199,37.2635416,0
  853. -81.4605463,37.2654128,0
  854. -81.4603879,37.2656101,0
  855. -81.4597224,37.2655307,0
  856. -81.4588849,37.2665333,0
  857. -81.4570061,37.2669246,0
  858. -81.4563277,37.2668706,0
  859. -81.4553035,37.2671125,0
  860. -81.454239,37.2670385,0
  861. -81.4535286,37.2673573,0
  862. -81.4526664,37.2684574,0
  863. -81.4508776,37.2691121,0
  864. -81.4490546,37.2696537,0
  865. -81.4482777,37.2706308,0
  866. -81.4482366,37.2712787,0
  867. -81.448455,37.2717633,0
  868. -81.4483337,37.2720752,0
  869. -81.4476727,37.2723063,0
  870. -81.4469515,37.2720172,0
  871. -81.4463246,37.2721048,0
  872. -81.4460041,37.2722971,0
  873. -81.4454167,37.272434,0
  874. -81.4449287,37.2723665,0
  875. -81.4446928,37.2718814,0
  876. -81.4021023,37.296043,0
  877. -81.4047762,37.2986855,0
  878. -81.4024742,37.3008638,0
  879. -81.402065,37.30167,0
  880. -81.3983178,37.3029579,0
  881. -81.3967243,37.3045524,0
  882. -81.3971635,37.3063247,0
  883. -81.3985355,37.3079749,0
  884. -81.3979323,37.3093636,0
  885. -81.3983672,37.3104428,0
  886. -81.3964046,37.3112699,0
  887. -81.3951616,37.3128047,0
  888. -81.3952291,37.3144747,0
  889. -81.3925532,37.3159119,0
  890. -81.3909322,37.3168215,0
  891. -81.3894935,37.3177139,0
  892. -81.3895774,37.3182531,0
  893. -81.3895122,37.318541,0
  894. -81.3884598,37.3196309,0
  895. -81.3880718,37.319763,0
  896. -81.387124,37.3203344,0
  897. -81.3865857,37.3205087,0
  898. -81.3858631,37.3201662,0
  899. -81.3857268,37.3196688,0
  900. -81.3847963,37.3185697,0
  901. -81.3834903,37.3186906,0
  902. -81.3808462,37.3178831,0
  903. -81.3764056,37.3178602,0
  904. -81.3700964,37.3219095,0
  905. -81.3624476,37.3377904,0
  906. -81.321265,37.3003758,0
  907. -81.2936713,37.2817961,0
  908. -81.225152,37.2350517,0
  909. -81.1731459,37.2597867,0
  910. -81.0984513,37.2797135,0
  911. -80.8609857,37.3238232,0
  912. -80.8452759,37.3964369,0
  913. -80.7620393,37.3655397,0
  914. -80.5170821,37.4953096,0
  915. -80.4695127,37.4226185,0
  916. -80.2824999,37.5328063,0
  917. -80.3201035,37.5623936,0
  918. -80.2149516,37.6240074,0
  919. -80.2923732,37.6830213,0
  920. -80.1624209,37.8744793,0
  921. -80.6540282,38.2133711,0
  922. -80.934687,38.3298255,0
  923. </coordinates>
  924. </LinearRing>
  925. </outerBoundaryIs>
  926. </Polygon>
  927. </Placemark>
  928. </Folder>
  929. </Document>
  930. </kml>`;
  931. }
  932. })();