您需要先安装一个扩展,例如 篡改猴、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.05.30 // @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; // Referenz zum Slider let valueDisplay = null; // Referenz zur Wertanzeige des Sliders let sliderStatus = null; // Referenz zur Statusanzeige des Sliders let tabPaneElement = null; // Referenz zum Tab-Inhaltsbereich // Funktion zum Anwenden der Straßenbreite function applyStreetWidth(currentValue) { if (!W || !W.model || !W.model.segments || !W.userscripts) { console.warn('WME Script (v2015.05.30): WME-Objekte nicht verfügbar für applyStreetWidth.'); if (sliderStatus) { sliderStatus.textContent = 'Fehler: WME nicht bereit.'; sliderStatus.style.color = '#ff6347'; // tomato } return; } try { const segments = W.model.segments.getObjectArray(); let updatedCount = 0; segments.forEach(segment => { const element = W.userscripts.getFeatureElementByDataModel(segment); if (element) { element.style.strokeWidth = `${currentValue / 100}em`; updatedCount++; } }); if (valueDisplay) { valueDisplay.textContent = currentValue; } if (sliderStatus) { sliderStatus.style.color = 'green'; sliderStatus.textContent = `${updatedCount} Segmente aktualisiert.`; } } catch (error) { console.error('WME Script (v2015.05.30): Fehler beim Anpassen der Straßenbreite:', error); if (sliderStatus) { sliderStatus.textContent = 'Fehler beim Anpassen.'; sliderStatus.style.color = 'red'; } } } async function initializeScriptFeatures() { console.log("WME Script (v2015.05.30): initializeScriptFeatures called (wme-ready)."); if (typeof W === 'undefined' || !W.map || !W.model || !W.selectionManager || !W.model.streets || !W.model.segments || !W.userscripts || !W.map.olMap || !W.map.olMap.viewPortDiv) { console.error("WME Script (v2015.05.30): WME core objects not available. Aborting."); alert("WME Script Fehler: Wichtige WME-Objekte nicht gefunden. Das Skript kann nicht initialisiert werden. Bitte Konsole prüfen."); return; } console.log("WME Script (v2015.05.30): All required WME objects confirmed."); try { const scriptId = "wme-street-width-tab"; let tabLabel; try { console.log(`WME Script (v2015.05.30): Attempting to register sidebar tab with ID: ${scriptId}`); const registrationResult = W.userscripts.registerSidebarTab(scriptId); tabLabel = registrationResult.tabLabel; tabPaneElement = registrationResult.tabPane; // Store tabPane globally for access console.log(`WME Script (v2015.05.30): Sidebar tab ${scriptId} registered successfully.`); } catch (e) { console.warn(`WME Script (v2015.05.30): Tab mit ID ${scriptId} konnte nicht registriert werden, ggf. existiert er bereits. Fehler: ${e.message}. Versuche neu zu erstellen.`); try { W.userscripts.removeSidebarTab(scriptId); // Attempt to remove if it exists const registrationResult = W.userscripts.registerSidebarTab(scriptId); tabLabel = registrationResult.tabLabel; tabPaneElement = registrationResult.tabPane; console.log(`WME Script (v2015.05.30): Sidebar tab ${scriptId} re-registered successfully.`); } catch (removeError) { console.error(`WME Script (v2015.05.30): Konnte existierenden Tab ${scriptId} nicht entfernen oder neu registrieren: ${removeError.message}`); alert(`WME Script Fehler: Tab ${scriptId} konnte nicht erstellt werden. Bitte Konsole prüfen.`); return; } } tabLabel.innerText = 'Breite'; tabLabel.title = 'Straßenbreiten-Anpasser'; const content = ` <div style="padding: 10px;"> <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%; margin-top: 5px;"> <div id="sliderStatusTab" style="color: green; min-height: 1em; font-size: 0.9em; margin-top: 5px;"></div> </div> </div> `; tabPaneElement.innerHTML = content; console.log(`WME Script (v2015.05.30): Tab content set for ${scriptId}.`); await W.userscripts.waitForElementConnected(tabPaneElement); console.log(`WME Script (v2015.05.30): Tab pane for ${scriptId} connected to DOM.`); // UI-Elemente aus dem Tab-Inhalt holen slider = tabPaneElement.querySelector('#widthSliderTab'); valueDisplay = tabPaneElement.querySelector('#widthValueTab'); sliderStatus = tabPaneElement.querySelector('#sliderStatusTab'); if (slider && valueDisplay && sliderStatus) { slider.addEventListener('input', (e) => { applyStreetWidth(e.target.value); }); window.addEventListener('resize', () => { if (slider) { console.log("WME Script (v2015.05.30): Window resized, applying street width."); applyStreetWidth(slider.value); } }); document.addEventListener('wme-map-data-loaded', () => { if (slider) { console.log("WME Script (v2015.05.30): Map data loaded, applying street width."); applyStreetWidth(slider.value); } }); applyStreetWidth(slider.value); // Initial anwenden console.log(`WME Script (v2015.05.30): Slider functionality and listeners initialized in sidebar tab.`); } else { console.error('WME Script (v2015.05.30): Slider-Elemente im Tab nicht gefunden.'); sliderStatus.textContent = 'Fehler: UI-Elemente nicht gefunden.'; sliderStatus.style.color = 'red'; } console.log("WME Script (v2015.05.30): All UI elements and functionalities initialized in sidebar tab."); } catch (error) { console.error('WME Script (v2015.05.30): Kritischer Fehler bei der Initialisierung des Sidebar Tabs:', error); alert("WME Script Fehler: Kritischer Fehler bei der Initialisierung des Tabs. Das Skript funktioniert möglicherweise nicht. Bitte Konsole prüfen."); } } // Initialisierung des Skripts console.log("WME Script (v2015.05.30): Script execution started. Checking WME state."); if (typeof W !== 'undefined' && W.userscripts && W.userscripts.state && W.userscripts.state.isReady) { console.log("WME Script (v2015.05.30): WME is already ready. Calling initializeScriptFeatures directly."); initializeScriptFeatures(); } else { console.log("WME Script (v2015.05.30): WME not ready yet. Adding 'wme-ready' event listener for initial setup."); document.addEventListener("wme-ready", initializeScriptFeatures, { once: true }); } })();