您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add uturns from node
当前为
// ==UserScript== // @name WME Add Uturns from node // @version 0.1 // @description Add uturns from node // @author ixxvivxxi // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @include https://editor-beta.waze.com/editor/* // @include https://editor-beta.waze.com/*/editor/* // @grant none // @namespace https://gf.qytechs.cn/ru/scripts/16950-wme-add-uturns-from-node // ==/UserScript== function Uturns_bootstrap() { var bGreasemonkeyServiceDefined = false; try { if ("object" === typeof Components.interfaces.gmIGreasemonkeyService) { bGreasemonkeyServiceDefined = true; } } catch (err) { //Ignore. } if ( "undefined" === typeof unsafeWindow || ! bGreasemonkeyServiceDefined) { unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute ('onclick', 'return window;'); return dummyElem.onclick (); } ) (); } /* begin running the code! */ setTimeout(startUturns,999); } function startUturns() { Waze.selectionManager.events.register("selectionchanged", null, showButton); var wazeActionModifyConnection= require("Waze/Action/ModifyConnection") function showButton() { if(Waze.selectionManager.selectedItems.length == 0 || Waze.selectionManager.selectedItems.length > 1) return; if(Waze.selectionManager.selectedItems[0].model.type == "node") { $('.side-panel-section:first-child').append('<button id="addUturns" class="btn btn-default">add uturns</button>'); } } $('#sidebar').on('click', '#addUturns', function(event) { var node = Waze.selectionManager.selectedItems[0].model; var segIDs = node.attributes.segIDs; for (var i = 0; i < segIDs.length; i++) { var segment = Waze.model.segments.objects[segIDs[i]]; if (segment.attributes.fromNodeID == node.attributes.id) { console.log('А', segment.attributes.id); segment.attributes.fromConnections[segment.attributes.id] = true; Waze.model.actionManager.add(new wazeActionModifyConnection(segment.attributes.id, segment.getFromNode(), segment.attributes.id,segment.getFromNode())); } else { console.log('B', segment.attributes.id); segment.attributes.toConnections[segment.attributes.id] = true; Waze.model.actionManager.add(new wazeActionModifyConnection(segment.attributes.id, segment.getToNode(), segment.attributes.id, segment.getToNode())); } } }); function addPOIs() { $(".more-actions .edit-house-numbers").click(); setTimeout(function() { $('#map-lightbox .toolbar .cancel').click(); for (var key in Waze.model.houseNumbers.objects) { if (Waze.model.houseNumbers.objects[key].numbers.length > 0) { for (var i=0; i<Waze.model.houseNumbers.objects[key].numbers.length; i++) { var number = Waze.model.houseNumbers.objects[key].numbers[i].number; var hasPOI = false; var hasRH = false; for (var idVenue in Waze.model.venues.objects) { var venue = Waze.model.venues.objects[idVenue]; var hasRH_ = false; var normalCategory = true; for (var ic = 0; ic < venue.attributes.categories.length; ic++) { var category = venue.attributes.categories[ic]; if (category == "PARKING_LOT" || category == "PARK" || category == "RIVER_STREAM" || category == "FOREST_GROVE" || category == "NATURAL_FEATURES" || category == "SEA_LAKE_POOL") { normalCategory = false; } if (category == "RESIDENCE_HOME" && venue.attributes.houseNumber == number.toString() && venue.attributes.streetID == address.street.id ) { hasRH_ = true; hasRH = true; } } if (normalCategory && !hasRH_ && venue.geometry.bounds.containsLonLat(Waze.model.houseNumbers.objects[key].numbers[i].geometry.toLonLat()) ) { hasPOI = true; if (venue.attributes.streetID != address.street.id) { var newAddressAtts={streetName: address.street.name, emptyStreet: false, cityName: address.city.name, emptyCity: false, stateID: address.state.id, countryID: address.country.id}; Waze.model.actionManager.add(new wazeActionUpdateFeatureAddress(venue, newAddressAtts, {streetIDField: 'streetID'} )); } var newAtts = {}; var haveChanges = false; if (venue.attributes.houseNumber != number.toString() && number.indexOf(" ") == -1) { newAtts.houseNumber = number; haveChanges = true; } if (venue.attributes.name != number.toString() && venue.attributes.name == "") { newAtts.name = number; haveChanges = true; } var aliases = venue.attributes.aliases; if (hasChar(number)) { var length = venue.attributes.aliases.length; var street = number + " " + address.street.name; var hasAliasAddress = false; for (var ia = 0; ia < length; ia++) { if (street == venue.attributes.aliases[ia]) { hasAliasAddress = true; } } if (!hasAliasAddress) { aliases.push(street); haveChanges = true; } if ((address.country.id == 37 || address.country.id == 186) && number.indexOf("/") != -1) { hasAliasAddress = false; var street = number.replace('/', 'к') + " " + address.street.name; for (var ia = 0; ia < length; ia++) { if (street == venue.attributes.aliases[ia]) { hasAliasAddress = true; } } if (!hasAliasAddress) { aliases.push(street); haveChanges = true; } hasAliasAddress = false; var street = number.replace('/', ' корпус ') + " " + address.street.name; for (var ia = 0; ia < length; ia++) { if (street == venue.attributes.aliases[ia]) { hasAliasAddress = true; } } if (!hasAliasAddress) { aliases.push(street); haveChanges = true; } } } if (haveChanges) { newAtts.aliases = aliases; Waze.model.actionManager.add(new wazeActionUpdateObject(venue, newAtts)); } } } if (!hasRH && number.indexOf(" ") == -1 && !hasChar(number)) { var poi = new wazefeatureVectorLandmark(); poi.geometry = Waze.model.houseNumbers.objects[key].numbers[i].geometry.clone(); poi.geometry.x = poi.geometry.x + 2; poi.geometry.y = poi.geometry.y + 2; poi.attributes.categories = ["OTHER"]; Waze.model.actionManager.add(new wazeActionAddLandmark(poi)); var newAddressAtts={streetName: address.street.name, emptyStreet: false, cityName: address.city.name, emptyCity: false, stateID: address.state.id, countryID: address.country.id}; Waze.model.actionManager.add(new wazeActionUpdateFeatureAddress(poi, newAddressAtts, {streetIDField: 'streetID'} )); Waze.model.actionManager.add(new wazeActionUpdateObject(poi, {houseNumber: number, residential: true})); } if (!hasPOI && hasChar(number)) { var poi = new wazefeatureVectorLandmark(); poi.geometry = Waze.model.houseNumbers.objects[key].numbers[i].geometry.clone(); poi.attributes.categories = ["OTHER"]; poi.attributes.name = number; poi.attributes.aliases.push(number + " " + address.street.name); if ((address.country.id == 37 || address.country.id == 186) && number.indexOf("/") != -1) { poi.attributes.aliases.push(number.replace('/', 'к') + " " + address.street.name); poi.attributes.aliases.push(number.replace('/', ' корпус ') + " " + address.street.name); } Waze.model.actionManager.add(new wazeActionAddLandmark(poi)); var newAddressAtts={streetName: address.street.name, emptyStreet: false, cityName: address.city.name, emptyCity: false, stateID: address.state.id, countryID: address.country.id}; Waze.model.actionManager.add(new wazeActionUpdateFeatureAddress(poi, newAddressAtts, {streetIDField: 'streetID'} )); if (number.indexOf(" ") == -1) { Waze.model.actionManager.add(new wazeActionUpdateObject(poi, {houseNumber: number})); } } } } } }, 3000); } function addAltNames(arr) { if ($('.alias-name').length>0) { $("#landmark-edit-general .aliases-view .delete").click(); } for (var i = 0; i < arr.length; i++) { $("#landmark-edit-general .aliases-view .add").click(); var elem; $('#landmark-edit-general .aliases-view input[type=text]').each(function(index){ if(i == index) {elem = $(this);} }); elem.val(arr[i]); elem.change(); } } function isChar(number) { var reg = /([0-9])[А-Яа-я]/; switch (true) { case reg.test(number): return true; break; default: return false; } } function hasChar(number) { var reg = /[а-яА-Яa-zA-Z/-]/; switch (true) { case reg.test(number): return true; break; default: return false; } } } Uturns_bootstrap();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址