您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds an overlay for military bases
// ==UserScript== // @name WME Military Bases Overlay // @namespace https://gf.qytechs.cn/en/users/166843-wazedev // @version 2018.05.02.02 // @description Adds an overlay for military bases // @author WazeDev // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/ // @require https://gf.qytechs.cn/scripts/24851-wazewrap/code/WazeWrap.js // @license GNU GPLv3 // @grant none // ==/UserScript== (function() { 'use strict'; var _color = '#E6E6E6'; var _settingsStoreName = '_wme_military_overlay'; var _settings; var _features; var _kml; var _layerName = 'Military Overlay'; var _layer = null; var defaultFillOpacity = 0.3; function loadSettingsFromStorage() { _settings = $.parseJSON(localStorage.getItem(_settingsStoreName)); if(!_settings) { _settings = { layerVisible: true //hiddenAreas: [] }; } else { _settings.layerVisible = (_settings.layerVisible === true); //_settings.hiddenAreas = _settings.hiddenAreas || []; } } function saveSettingsToStorage() { if (localStorage) { var settings = { layerVisible: _layer.visibility //hiddenAreas: _settings.hiddenAreas }; localStorage.setItem(_settingsStoreName, JSON.stringify(settings)); } } function GetFeaturesFromKMLString(strKML) { var format = new OpenLayers.Format.KML({ 'internalProjection': Waze.map.baseLayer.projection, 'externalProjection': new OpenLayers.Projection("EPSG:4326") }); return format.read(strKML); } function updateDistrictNameDisplay(){ $('.wmemilitaryoverlay-region').remove(); if (_layer !== null) { var mapCenter = new OpenLayers.Geometry.Point(W.map.center.lon,W.map.center.lat); for (var i=0;i<_layer.features.length;i++){ var feature = _layer.features[i]; var color; var text = ''; var num; var url; if(pointInFeature(feature.geometry, mapCenter)){ text = feature.attributes.name; color = '#00ffff'; var $div = $('<div>', {id:'wmemilitaryoverlay', class:"wmemilitaryoverlay-region", style:'display:inline-block;margin-left:10px;', title:'Click to toggle color on/off for this group'}) .css({color:color, cursor:"pointer"}) .click(toggleAreaFill); var $span = $('<span>').css({display:'inline-block'}); $span.text(text).appendTo($div); $('.location-info-region').parent().append($div); if (color) { break; } } } } } function pointInFeature(geometry, mapCenter){ if(geometry.CLASS_NAME == "OpenLayers.Geometry.Collection"){ for(let i=0; i<geometry.components.length; i++){ if(geometry.components[i].containsPoint(mapCenter)) return true; } } else return geometry.containsPoint(mapCenter); return false; } function toggleAreaFill() { var text = $('#wmemilitaryoverlay span').text(); if (text) { var match = text.match(/WV-(\d+)/); if (match.length > 1) { var group = parseInt(match[1]); var f = _layer.features[group-1]; var hide = f.attributes.fillOpacity !== 0; f.attributes.fillOpacity = hide ? 0 : defaultFillOpacity; var idx = _settings.hiddenAreas.indexOf(group); if (hide) { if (idx === -1) _settings.hiddenAreas.push(group); } else { if (idx > -1) { _settings.hiddenAreas.splice(idx,1); } } //saveSettingsToStorage(); _layer.redraw(); } } } function init() { InstallKML(); loadSettingsFromStorage(); var layerid = 'wme_military_overlay'; var _features = GetFeaturesFromKMLString(_kml); for(let i=0; i< _features.length; i++){ _features[i].attributes.name = _features[i].attributes.name.replace('<at><openparen>', '').replace('<closeparen>',''); _features[i].attributes.labelText = _features[i].attributes.name; } var layerStyle = new OpenLayers.StyleMap({ strokeDashstyle: 'solid', strokeColor: _color, strokeOpacity: 0.4, strokeWidth: 2, fillOpacity: defaultFillOpacity, fillColor: _color, //'#7cb342', label : "${labelText}", fontColor: '#ffffff', labelOutlineColor: '#000000', labelOutlineWidth: 4, labelAlign: 'cm', fontSize: "16px" }); _layer = new OL.Layer.Vector("Military Overlay", { rendererOptions: { zIndexing: true }, uniqueName: layerid, shortcutKey: "S+" + 0, layerGroup: 'cities_overlay', zIndex: -9999, displayInLayerSwitcher: true, visibility: _settings.layerVisible, styleMap: layerStyle }); I18n.translations[I18n.locale].layers.name[layerid] = "Military Overlay"; _layer.addFeatures(_features); W.map.addLayer(_layer); W.map.events.register("moveend", null, updateDistrictNameDisplay); //window.addEventListener('beforeunload', function saveOnClose() { saveSettingsToStorage(); }, false); updateDistrictNameDisplay(); // Add the layer checkbox to the Layers menu. WazeWrap.Interface.AddLayerCheckbox("display", "Military Overlay", _settings.layerVisible, layerToggled); } function layerToggled(visible) { _layer.setVisibility(visible); saveSettingsToStorage(); } function bootstrap() { if (W && W.loginManager && W.loginManager.isLoggedIn()) { init(); console.log('WME Military Overlay:', 'Initialized'); } else { console.log('WME Military Overlay: ', 'Bootstrap failed. Trying again...'); window.setTimeout(() => bootstrap(), 500); } } bootstrap(); function InstallKML(){ _kml = `<?xml version="1.0" encoding="UTF-8"?> <kml xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://www.opengis.net/kml/2.2"> <Document> <name>WV Military Bases</name> <visibility>1</visibility> <Style id="KMLStyler"> <IconStyle> <scale>0.8</scale> </IconStyle> <LabelStyle> <scale>1.0</scale> </LabelStyle> <LineStyle> <color>ffbc822f</color> <width>2</width> <gx:labelVisibility>0</gx:labelVisibility> </LineStyle> <PolyStyle> <color>7fe1ca9e</color> </PolyStyle> </Style> <Schema name="WV_Military_Bases" id="kml_WV_Military_Bases"> <Folder id="kml_ft_cb_2017_39_place_500k"> <name>WV Military Bases</name> <Placemark> <name>Camp Dawson Cantonement</name> <description>Camp Dawson Cantonement</description> <Style><LineStyle><color>FF232323</color><width>0.737006</width></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style> <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.68185,39.44086 -79.68029,39.44276 -79.67552,39.44527 -79.67126,39.44797 -79.66746,39.45154 -79.66435,39.4542 -79.65981,39.44754 -79.65773,39.4443 -79.67169,39.44147 -79.68004,39.43571 -79.68159,39.43867 -79.68185,39.44086</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry> </Placemark> <Placemark> <name>Volkstone TA</name> <description>Volkstone TA</description> <Style><LineStyle><color>FF232323</color><width>0.737006</width></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style> <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.68367,39.44686 -79.67572,39.45539 -79.67448,39.4559 -79.67539,39.45971 -79.67365,39.46165 -79.66940,39.46006 -79.66592,39.46175 -79.65753,39.46274 -79.65457,39.46402 -79.65055,39.46393 -79.65007,39.4631 -79.66188,39.45798 -79.66559,39.45381 -79.67476,39.44701 -79.68295,39.44164 -79.68367,39.44686</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry> </Placemark> <Placemark> <name>Pringle TA</name> <description>Pringle TA</description> <Style><LineStyle><color>FF232323</color><width>0.737006</width></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style> <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.70350,39.38503 -79.71419,39.39042 -79.71630,39.39807 -79.72744,39.39983 -79.72743,39.40448 -79.72952,39.40773 -79.72334,39.40766 -79.72332,39.40868 -79.72152,39.41181 -79.71634,39.4149 -79.70888,39.41777 -79.69775,39.42072 -79.68791,39.42128 -79.68818,39.41862 -79.68844,39.41498 -79.68897,39.41186 -79.68744,39.4095 -79.68324,39.40649 -79.68174,39.40396 -79.68129,39.40163 -79.68295,39.39964 -79.68513,39.39824 -79.69020,39.39806 -79.69642,39.39923 -79.70060,39.3974 -79.70240,39.39244 -79.70200,39.38744 -79.70350,39.38503</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry> </Placemark> <Placemark> <name>Briery Mountain TA</name> <description>Briery Mountain TA</description> <Style><LineStyle><color>FF232323</color><width>0.737006</width></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style> <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.64693,39.37979 -79.66188,39.39364 -79.66188,39.40309 -79.67498,39.41058 -79.66906,39.41285 -79.66176,39.40785 -79.65823,39.41303 -79.64936,39.4129 -79.63954,39.40178 -79.64035,39.38674 -79.64693,39.37979</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry> </Placemark> <Placemark> <name>Goldmine TA</name> <description>Goldmine TA</description> <Style><LineStyle><color>FF232323</color><width>0.737006</width></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style> <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.65368,39.38197 -79.65535,39.36854 -79.68065,39.35244 -79.68474,39.35646 -79.6945,39.36717 -79.69925,39.37229 -79.7022,39.37527 -79.70272,39.38133 -79.70086,39.38368 -79.69864,39.38672 -79.69921,39.39084 -79.69857,39.39444 -79.69627,39.39659 -79.68682,39.39589 -79.68302,39.3972 -79.67989,39.40004 -79.65368,39.38197</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry> </Placemark> <Placemark> <name>White Hair TA</name> <description>White Hair TA</description> <Style><LineStyle><color>FF232323</color><width>0.737006</width></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style> <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.61171,39.45336 -79.60546,39.4447 -79.60172,39.44 -79.60519,39.43298 -79.61098,39.43231 -79.63600,39.4071 -79.63964,39.40675 -79.63247,39.44433 -79.62849,39.44774 -79.62754,39.44823 -79.62721,39.44896 -79.62556,39.45003 -79.62240,39.44916 -79.62111,39.44819 -79.61948,39.44779 -79.61171,39.45336</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry> </Placemark> <Placemark> <name>Camp Tackett</name> <description>Camp Tackett</description> <Style><LineStyle><color>FF232323</color><width>0.737006</width></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style> <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>-79.52866,39.46356 -79.52280,39.46111 -79.51810,39.45822 -79.51742,39.45762 -79.52537,39.46044 -79.52627,39.45894 -79.53048,39.46036 -79.53017,39.4616 -79.52942,39.4629 -79.52866,39.46356</coordinates></LinearRing></outerBoundaryIs></Polygon></MultiGeometry> </Placemark> </Folder> </Document></kml>`; } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址