您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Ermöglicht das Anpassen der Straßenbreite und das Auswählen von Segmenten beim Hovern.
当前为
// ==UserScript== // @name WME Mobil Fix // @namespace https://greasyfork.org/de/users/863740-horst-wittlich // @version 2015.06.01 // @description Ermöglicht das Anpassen der Straßenbreite und das Auswählen von Segmenten beim Hovern. // @author Hiwi234 // @match https://www.waze.com/editor* // @match https://beta.waze.com/editor* // @match https://www.waze.com/*/editor* // @match https://beta.waze.com/*/editor* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; let slider = null; let valueDisplay = null; let sliderStatus = null; let tabPaneElement = null; let currentWidth = 100; function applyStreetWidth(value) { if (!W || !W.model || !W.model.segments || !W.userscripts) { console.warn('WME Script: WME-Objekte nicht verfügbar.'); if (sliderStatus) { sliderStatus.textContent = 'Fehler: WME nicht bereit.'; sliderStatus.style.color = '#ff6347'; } return; } try { currentWidth = value; const segments = W.model.segments.getObjectArray(); let updatedCount = 0; segments.forEach(segment => { const element = W.userscripts.getFeatureElementByDataModel(segment); if (element) { element.style.strokeWidth = `${value / 100}em`; updatedCount++; } }); if (valueDisplay) { valueDisplay.textContent = value; } if (sliderStatus) { sliderStatus.style.color = 'green'; sliderStatus.textContent = `${updatedCount} Segmente aktualisiert.`; } } catch (error) { console.error('WME Script: Fehler beim Anpassen der Straßenbreite:', error); if (sliderStatus) { sliderStatus.textContent = 'Fehler beim Anpassen.'; sliderStatus.style.color = 'red'; } } } function updateAllSegments() { if (currentWidth !== 100) { applyStreetWidth(currentWidth); } } async function initializeScriptFeatures() { console.log("WME Script: Initialisierung gestartet."); if (!W?.userscripts?.state.isReady) { console.error("WME Script: WME nicht bereit. Abbruch."); return; } try { const scriptId = "wme-street-width-tab"; let tabLabel; try { const registrationResult = W.userscripts.registerSidebarTab(scriptId); tabLabel = registrationResult.tabLabel; tabPaneElement = registrationResult.tabPane; } catch (e) { console.warn(`WME Script: Tab-Registrierung fehlgeschlagen: ${e.message}`); return; } tabLabel.innerText = 'Mobil Steuerung'; tabLabel.title = 'WME Mobil Fix'; await W.userscripts.waitForElementConnected(tabPaneElement); const container = document.createElement('div'); container.style.padding = '10px'; container.innerHTML = ` <h4>Straßenbreiten-Steuerung</h4> <div class="control-group" style="margin-top: 15px;"> <label for="widthSliderTab">Breite (%): <span id="widthValueTab">100</span></label> <input type="range" id="widthSliderTab" min="50" max="300" value="100" style="width: 100%" /> <div id="sliderStatusTab" style="margin-top: 5px; font-size: 12px;">Bereit</div> </div> <div style="margin-top: 15px;"> <button id="selectAllBtn" class="waze-btn waze-btn-small" style="width: 100%"> Alles auswählen (STRG+A) </button> </div> `; tabPaneElement.appendChild(container); slider = document.getElementById('widthSliderTab'); valueDisplay = document.getElementById('widthValueTab'); sliderStatus = document.getElementById('sliderStatusTab'); slider.addEventListener('input', (e) => { applyStreetWidth(e.target.value); }); document.getElementById('selectAllBtn').addEventListener('click', () => { const event = new KeyboardEvent('keydown', { key: 'a', code: 'KeyA', keyCode: 65, which: 65, ctrlKey: true, bubbles: true, cancelable: true }); document.dispatchEvent(event); }); // Event-Listener für Kartenaktualisierungen document.addEventListener('wme-map-data-loaded', updateAllSegments); W.map.events.register("moveend", null, updateAllSegments); W.map.events.register("zoomend", null, updateAllSegments); } catch (error) { console.error('WME Script: Initialisierungsfehler:', error); } } if (W?.userscripts?.state.isReady) { initializeScriptFeatures(); } else { document.addEventListener('wme-ready', initializeScriptFeatures, { once: true }); } })();