您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Добавление альтернативных названий (адресов)
// ==UserScript== // @name WME Add addresses for places // @version 0.20.8.1 // @description Добавление альтернативных названий (адресов) // @author ixxvivxxi, Vinkoy // @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/12229-wme-add-alt-address-for-housing // ==/UserScript== function altAddress_bootstrap() { // fix `require` issue var WMEAPI={};for(WMEAPI.scripts=document.getElementsByTagName("script"),WMEAPI.url=null,i=0;i<WMEAPI.scripts.length;i++)if(WMEAPI.scripts[i].src.indexOf("/assets-editor/js/app")!=-1){WMEAPI.url=WMEAPI.scripts[i].src;break}if(null==WMEAPI.url)throw new Error("WME Hack: can't detect WME main JS");WMEAPI.require=function(a){return WMEAPI.require.define.modules.hasOwnProperty(a)?WMEAPI.require.define.modules[a]:(console.error("Require failed on "+a,WMEAPI.require.define.modules),null)},WMEAPI.require.define=function(a){0==WMEAPI.require.define.hasOwnProperty("modules")&&(WMEAPI.require.define.modules={});for(var b in a)WMEAPI.require.define.modules[b]=a[b]},WMEAPI.tmp=window.webpackJsonp,WMEAPI.t=function(a){if(WMEAPI.s[a])return WMEAPI.s[a].exports;var b=WMEAPI.s[a]={exports:{},id:a,loaded:!1};return WMEAPI.e[a].call(b.exports,b,b.exports,WMEAPI.t),b.loaded=!0,b.exports},WMEAPI.e=[],window.webpackJsonp=function(a,b){for(var d,e,c={},f=0,g=[];f<a.length;f++)e=a[f],WMEAPI.r[e]&&g.push.apply(g,WMEAPI.r[e]),WMEAPI.r[e]=0;var i,j,h=0;for(d in b)WMEAPI.e[d]=b[d],j=b[d].toString(),i=j.match(/CLASS_NAME:\"([^\"]*)\"/),i?c[i[1].replace(/\./g,"/").replace(/^W\//,"Waze/")]={index:d,func:WMEAPI.e[d]}:(c["Waze/Unknown/"+h]={index:d,func:WMEAPI.e[d]},h++);for(;g.length;)g.shift().call(null,WMEAPI.t);WMEAPI.s[0]=0;var l,k={};h=0;for(d in b)if(j=b[d].toString(),i=j.match(/CLASS_NAME:\"([^\"]*)\"/))k={},l=i[1].replace(/\./g,"/").replace(/^W\//,"Waze/"),k[l]=WMEAPI.t(c[l].index),WMEAPI.require.define(k);else{var m=j.match(/SEGMENT:"segment",/);m&&(k={},l="Waze/Model/ObjectType",k[l]=WMEAPI.t(c["Waze/Unknown/"+h].index),WMEAPI.require.define(k)),h++}window.webpackJsonp=WMEAPI.tmp,window.require=WMEAPI.require},WMEAPI.s={},WMEAPI.r={0:0},WMEAPI.WMEHACK_Injected_script=document.createElement("script"),WMEAPI.WMEHACK_Injected_script.setAttribute("type","application/javascript"),WMEAPI.WMEHACK_Injected_script.src=WMEAPI.url,document.body.appendChild(WMEAPI.WMEHACK_Injected_script); var oWaze=Window.Waze; var oI18n=Window.I18n; if (typeof unsafeWindow !== "undefined") { oWaze=unsafeWindow.Waze; oI18n=unsafeWindow.I18n; } if (typeof oWaze === "undefined") { setTimeout(altAddress_bootstrap, 500); return; } if (typeof oWaze.map === "undefined") { setTimeout(altAddress_bootstrap, 500); return; } if (typeof oWaze.selectionManager === "undefined") { setTimeout(altAddress_bootstrap, 500); return; } if (typeof oI18n === "undefined") { setTimeout(altAddress_bootstrap, 500); return; } if (typeof oI18n.translations === "undefined") { setTimeout(altAddress_bootstrap, 500); return; } /* begin running the code! */ setTimeout(startAltAddress, 999); } function startAltAddress() { console.log("WME-ADR: INITIALIZATION"); var POIaddresses = []; var POIs = []; Waze.selectionManager.events.register("selectionchanged", null, showTitle); $('#sidebar').on('click', '#addPOIs', function(event) { event.preventDefault(); addPOIs(); }); Waze.model.events.register('mergeend', null, getPOIs); Waze.model.events.register('zoomend', null, getPOIs); Waze.model.events.register('moveend', null, getPOIs); var wazeActionAddLandmark = require("Waze/Action/AddLandmark"); var wazeActionUpdateObject = require("Waze/Action/UpdateObject"); var wazeActionDeleteObject = require("Waze/Action/DeleteObject"); var wazeActionUpdateFeatureAddress = require("Waze/Action/UpdateFeatureAddress"); var wazefeatureVectorLandmark = require("Waze/Feature/Vector/Landmark"); var address; var selectStreetName = ""; addTab(); localDataManager(); var WME_ADR_debug = document.getElementById('_debugScript').checked; document.getElementById('_debugScript').onclick = function(){ WME_ADR_debug = document.getElementById('_debugScript').checked; WME_ADR_debug ? console.log("WME-ADR: debug ON") : console.log("WME-ADR: debug OFF"); }; function addTab() { if(!document.getElementById(CreateID())) { var btnSection = document.createElement('div'); btnSection.id = CreateID(); var userTabs = document.getElementById('user-info'); if (!(userTabs && getElementsByClassName('nav-tabs', userTabs))) return; var navTabs = getElementsByClassName('nav-tabs', userTabs)[0]; if (typeof navTabs !== "undefined") { if (!getElementsByClassName('tab-content', userTabs)) return; var tabContent = getElementsByClassName('tab-content', userTabs)[0]; if (typeof tabContent !== "undefined") { newtab = document.createElement('li'); newtab.innerHTML = '<a href="#' + CreateID() + '" data-toggle="tab"><span class="fa fa-home"></span></a>'; navTabs.appendChild(newtab); btnSection.innerHTML = '<div class="form-group">'+ '<h4><span class="fa fa-home"> Add addresses for places <sup>' + GM_info.script.version + '</sup> </h4>' + '</br>' + '<div title="Создавать ПТ"><input type="checkbox" id="_createRH" /><b> Создавать ПТ</b></div>' + '<div title="Создавать POI-точки"><input type="checkbox" id="_createPOI" /><b> Создавать POI-точки</b></div>' + '<div title="Обновлять контуры"><input type="checkbox" id="_updatePlaces" /><b> Обновлять контуры</b></div>' + '<div title="Обновлять блокировку"><input type="checkbox" id="_updateLock" /><b> Обновлять блокировку</b></div>' + '<div title="Выравнивать POI и ПТ по ХН"><input type="checkbox" id="_allignToHN" /><b> Выравнивать по ХН</b></div>' + '<div title="Уровень блокировки"><b>Уровень блокировки </b>' + '<select id="_lockLevel" style="padding-left: 30px;margin-left: 10px;" ><option value="0">1</option><option value="1">2</option><option value="2">3</option><option value="3">4</option><option value="4">5</option></select></div>' + '</br>' + '<div title="Debug script"><input type="checkbox" id="_debugScript" /><i> Debug script</i></div>' + '</div>'; btnSection.className = "tab-pane"; tabContent.appendChild(btnSection); console.log("WME-ADR: addTab. tab is created"); } else { btnSection.id=''; console.log("WME-ADR: addTab. 'tab-content' undefined"); } } else { btnSection.id=''; console.log("WME-ADR: addTab. 'nav-tabs' undefined"); } } else { console.log("WME-ADR: addTab. Tab has already created"); } } function CreateID() { return 'WME-addAddress'; } function localDataManager() { // restore saved settings if (localStorage.WMEaddAddress) { console.log("WME-ADR: LDM. restore saved settings"); options = JSON.parse(localStorage.WMEaddAddress); if(options[1] !== undefined) document.getElementById('_lockLevel').selectedIndex = options[1]; else document.getElementById('_lockLevel').selectedIndex = 0; document.getElementById('_createRH').checked = options[2]; document.getElementById('_createPOI').checked = options[3]; document.getElementById('_updatePlaces').checked = options[4]; document.getElementById('_updateLock').checked = options[5]; document.getElementById('_allignToHN').checked = options[6]; document.getElementById('_debugScript').checked = options[7]; console.log("WME-ADR: LDM. restored parameters from localStorage", options); } else { document.getElementById('_lockLevel').selectedIndex = 0; document.getElementById('_createRH').checked = true; document.getElementById('_createPOI').checked = true; document.getElementById('_updatePlaces').checked = true; document.getElementById('_updateLock').checked = true; document.getElementById('_allignToHN').checked = true; document.getElementById('_debugScript').checked = false; console.log("WME-ADR: LDM. set default parameters"); } // overload the WME exit function wme_saveaddAddressOptions = function() { if (localStorage) { var options = []; // preserve previous options which may get lost after logout if (localStorage.WMEaddAddress) options = JSON.parse(localStorage.WMEaddAddress); options[1] = document.getElementById('_lockLevel').selectedIndex; options[2] = document.getElementById('_createRH').checked; options[3] = document.getElementById('_createPOI').checked; options[4] = document.getElementById('_updatePlaces').checked; options[5] = document.getElementById('_updateLock').checked; options[6] = document.getElementById('_allignToHN').checked; options[7] = document.getElementById('_debugScript').checked; localStorage.WMEaddAddress = JSON.stringify(options); console.log("WME-ADR: LDM. save parameters"); } }; window.addEventListener("beforeunload", wme_saveaddAddressOptions, false); } function getPOIs() { POIs = []; for(var idVenue in Waze.model.venues.objects) { var venue = Waze.model.venues.objects[idVenue]; var venueAddressDetails = venue.getAddress(); if(selectStreetName === null || venueAddressDetails === null || venueAddressDetails. attributes.isEmpty === true) {continue;} if(venueAddressDetails.attributes.street.name == selectStreetName && selectStreetName !== "") { $("g[id^='Waze.Layer.FeatureLayer']").find("svg[id='" + venue.geometry.id + "']").attr('stroke', 'yellow'); $("g[id^='Waze.Layer.FeatureLayer']").find("circle[id='" + venue.geometry.id + "']").attr('stroke', 'yellow'); $("g[id^='Waze.Layer.FeatureLayer']").find("path[id='" + venue.geometry.id + "']").attr('stroke', 'yellow'); } var inPois = false; var category = venue.getMainCategory(); if(category == "NATURAL_FEATURES" || category == "OUTDOORS") { inPois = true; } for(var ir = 0; ir < POIs.length; ir++) { if(POIs[ir].attributes.id.toString().indexOf("-") != -1) {continue;} if(POIs[ir].attributes.id === idVenue) { POIs[ir] = venue; inPois = true; if(WME_ADR_debug) console.log("WME-ADR: getPOIs(); in POI list", venue); } } if(!inPois) { if(WME_ADR_debug) console.log("WME-ADR: getPOIs(); added to POI list ("+venueAddressDetails.attributes.street.name+", "+venueAddressDetails.attributes.houseNumber+")", venue); POIs.push(venue); } } if(WME_ADR_debug) console.log("WME-ADR: getPOIs(); POIs("+POIs.length+")", POIs); } function addClass() { if(POIs.length === 0) getPOIs(); $("g[id^='Waze.Layer.FeatureLayer']").find("svg[id^='OpenLayers.Geometry.Point']").attr('stroke', 'white'); $("g[id^='Waze.Layer.FeatureLayer']").find("circle[id^='OpenLayers.Geometry.Point']").attr('stroke', 'white'); $("g[id^='Waze.Layer.FeatureLayer']").find("path[id^='OpenLayers.Geometry.Polygon']").attr('stroke', '#ca9ace'); for(var ir = 0; ir < POIs.length; ir++) { var venueAddressDetails = POIs[ir].getAddress(); if(selectStreetName === null || selectStreetName === "" || venueAddressDetails === null || venueAddressDetails.attributes.isEmpty === true){continue;} if(venueAddressDetails.attributes.street.name == selectStreetName) { if(WME_ADR_debug) console.log("WME-ADR: add class"); $("g[id^='Waze.Layer.FeatureLayer']").find("svg[id='" + POIs[ir].geometry.id + "']").attr('stroke', 'yellow'); $("g[id^='Waze.Layer.FeatureLayer']").find("circle[id='" + POIs[ir].geometry.id + "']").attr('stroke', 'yellow'); $("g[id^='Waze.Layer.FeatureLayer']").find("path[id='" + POIs[ir].geometry.id + "']").attr('stroke', 'yellow'); } } } function showTitle() { if(Waze.selectionManager.selectedItems.length === 1 && Waze.selectionManager.selectedItems[0].model.type == "segment") { if(Waze.selectionManager.selectedItems[0].model.attributes.id.toString().indexOf("-") == -1) { address = Waze.selectionManager.selectedItems[0].model.getAddress(); var title = "Update addresses"; if(address.country.id == 37 || address.country.id == 186) { title = "Обновить адреса"; } selectStreetName = address.street.name; if(selectStreetName !== null) $('.more-actions').append('<button id="addPOIs" class="action-button btn btn-default">' + title + '</button>'); addClass(); } } else if(Waze.selectionManager.selectedItems.length === 1 &&Waze.selectionManager.selectedItems[0].model.type == "venue") { address = Waze.selectionManager.selectedItems[0].model.getAddress().attributes; if (address.houseNumber !== null && address.street !== null) { var number = Waze.selectionManager.selectedItems[0].model.getAddress().attributes.houseNumber; var streetName = Waze.selectionManager.selectedItems[0].model.getAddress().attributes.street.name; var venue = Waze.selectionManager.selectedItems[0].model; if(number !== null && (number.indexOf("/") !== -1 || hasChar(number))) { $('.aliases-view').parent().parent().append('<a target="_blank" id="_altAddr"" href="#">Добавить корпуса/литеры </a>'); $('.aliases-view').parent().parent().on('click', '#_altAddr', function(event) { event.preventDefault(); addAliases(); }); } } } else { if(WME_ADR_debug) console.log("WME-ADR: showTitle(): segment isn't selected"); $("g[id^='Waze.Layer.FeatureLayer']").find("svg[id^='OpenLayers.Geometry.Point']").attr('stroke', 'white'); $("g[id^='Waze.Layer.FeatureLayer']").find("circle[id^='OpenLayers.Geometry.Point']").attr('stroke', 'white'); $("g[id^='Waze.Layer.FeatureLayer']").find("path[id^='OpenLayers.Geometry.Polygon']").attr('stroke', '#ca9ace'); return; } } function addAliases() { var number = Waze.selectionManager.selectedItems[0].model.getAddress().attributes.houseNumber; var streetName = Waze.selectionManager.selectedItems[0].model.getAddress().attributes.street.name; var venue = Waze.selectionManager.selectedItems[0].model; if(number !== null && (number.indexOf("/") !== -1 || hasChar(number))) { var aliases = venue.attributes.aliases; var length = venue.attributes.aliases.length; var altName = number + " " + streetName; var hasAliasAddress = false; for(var ia = 0; ia < length; ia++) { if(altName == venue.attributes.aliases[ia]) { hasAliasAddress = true; } } if(!hasAliasAddress) { aliases.push(altName); haveChanges = true; } if(number.indexOf("/") != -1) { hasAliasAddress = false; var altName = number.replace('/', 'к') + " " + streetName; for(var ia = 0; ia < length; ia++) { if(altName == venue.attributes.aliases[ia]) { hasAliasAddress = true; } } if(!hasAliasAddress) { aliases.push(altName); haveChanges = true; } hasAliasAddress = false; var altName = number.replace('/', ' корпус ') + " " + streetName; for(var ia = 0; ia < length; ia++) { if(altName == venue.attributes.aliases[ia]) { hasAliasAddress = true; } } if(!hasAliasAddress) { aliases.push(altName); haveChanges = true; } } if(haveChanges) { $('.aliases-view .add').click(); $('.aliases-view .delete').click(); Waze.model.actionManager.add(new wazeActionUpdateObject(venue, {aliases : aliases})); } } } function createPOI(poiobject, isRH) { if(WME_ADR_debug) console.log("WME-ADR: --- createPOI(): isRH="+isRH, poiobject); var poi = new wazefeatureVectorLandmark(); var geometry = new OpenLayers.Geometry.Point(); geometry.x = poiobject.x - 1 + (isRH ? 2 : 0); geometry.y = poiobject.y; poi.geometry = geometry; poi.attributes.categories = ["OTHER"]; if (!isRH) poi.attributes.name = poiobject.houseNumber.toUpperCase(); poi.attributes.lockRank = document.getElementById('_lockLevel').selectedIndex; if(!isRH && hasChar(poiobject.houseNumber) || poiobject.houseNumber.indexOf("/") !== -1) { if(WME_ADR_debug && hasChar(poiobject.houseNumber)) console.log("WME-ADR: createPOI(): Has char ("+poiobject.houseNumber+")"); poi.attributes.aliases.push(poiobject.houseNumber.toUpperCase() + " " + poiobject.streetName); poi.attributes.name = poiobject.houseNumber.toUpperCase(); } if(!isRH && poiobject.houseNumber.indexOf("/") != -1) { if(WME_ADR_debug) console.log("WME-ADR: createPOI(): Has '/' ("+poiobject.houseNumber+")"); poi.attributes.aliases.push(poiobject.houseNumber.replace('/', 'к') + " " + poiobject.streetName); poi.attributes.aliases.push(poiobject.houseNumber.replace('/', ' корпус ') + " " + poiobject.streetName); } if(isRH && (hasChar(poiobject.houseNumber) || poiobject.houseNumber.indexOf("/") != -1)) { if(WME_ADR_debug) console.log("WME-ADR: createPOI(): RH has char or '/' EXIT ("+poiobject.houseNumber+")"); return; } Waze.model.actionManager.add(new wazeActionAddLandmark(poi)); var poiAddress = poi.getAddress().attributes; if(poiAddress.city === null) { if(WME_ADR_debug) console.log("WME-ADR: createPOI(): null city", poiobject); return; } var newAddressAtts = { streetName: poiobject.streetName, emptyStreet: false, cityName: (poiAddress.city.attributes.name.indexOf(poiobject.cityName) != -1) ? poiAddress.city.attributes.name : poiobject.cityName, emptyCity: false, stateID: poiAddress.state.id, countryID: poiAddress.country.id }; Waze.model.actionManager.add(new wazeActionUpdateFeatureAddress(poi, newAddressAtts,{streetIDField: 'streetID'})); Waze.model.actionManager.add(new wazeActionUpdateObject(poi,{houseNumber: poiobject.houseNumber.toUpperCase(),residential: isRH})); POIs.push(poi); if(WME_ADR_debug) console.log("WME-ADR: createPOI(): added to POI list ("+poiobject.streetName+", "+poiobject.houseNumber.toUpperCase()+")", poi); } function addPOIs() { if(WME_ADR_debug) console.log("WME-ADR: --- addPOIs()"); getPOIs(); $(".more-actions .edit-house-numbers").click(); setTimeout(function() { $('#map-lightbox .cancel').click(); if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): HN", Waze.model.houseNumbers.objects); for(var key in Waze.model.houseNumbers.objects) { //if (key != address.street.id) {continue;} if(Waze.model.houseNumbers.objects[key].numbers.length > 0) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): HN count("+Waze.model.houseNumbers.objects[key].numbers.length+")"); for(var i = 0; i < Waze.model.houseNumbers.objects[key].numbers.length; i++) { //console.log(Waze.model.houseNumbers.objects[key].getSegment()); if(Waze.model.houseNumbers.objects[key].getSegment() === undefined) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): undefined segment"); continue; } if(Waze.model.houseNumbers.objects[key].getSegment().getAddress().street === null) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): null street", Waze.model.houseNumbers.objects[key].getSegment().getAddress()); continue; } if(Waze.model.houseNumbers.objects[key].getSegment().getAddress().street.name != address.street.name) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): other streetName ("+address.street.name+")", Waze.model.houseNumbers.objects[key].getSegment().getAddress().street.name); continue; } if(!Waze.map.getExtent().intersectsBounds(Waze.model.houseNumbers.objects[key].numbers[i].geometry.getBounds())) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): out of screen", Waze.model.houseNumbers.objects[key].numbers[i].number); continue; } var number = Waze.model.houseNumbers.objects[key].numbers[i].number; var hasPOI = false; var hasRH = false; for(var ir = 0; ir < POIs.length; ir++) { var venue = POIs[ir]; var venueAddress = venue.getAddress().attributes; if(venueAddress === null || venueAddress.isEmpty === true) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): empty venueAddress"); continue; } if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): NH: "+address.city.attributes.name+", "+address.street.name+", "+number,address); if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): POI: "+venueAddress.city.attributes.name+", "+venueAddress.street.name+", "+venueAddress.houseNumber+", RH="+venue.isResidential(),venueAddress); if(address.city.attributes.name.indexOf(venueAddress.city.attributes.name) != -1 && address.street.name == venueAddress.street.name && (venueAddress.houseNumber !== null && number.toLowerCase() == venueAddress.houseNumber.toLowerCase()) && (venue.isResidential() || (!venue.isResidential() && venue.attributes.name.toLowerCase() == number.toLowerCase())) ) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): *** found equal ("+venueAddress.city.attributes.name+", "+venueAddress.street.name+", "+venueAddress.houseNumber+")"); if (document.getElementById('_updateLock').checked && venue.attributes.lockRank < document.getElementById('_lockLevel').selectedIndex) { var newLock = {}; newLock.lockRank = document.getElementById('_lockLevel').selectedIndex; Waze.model.actionManager.add(new wazeActionUpdateObject(venue, newLock)); if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): update lock "+venue.attributes.lockRank+" -> "+newLock.lockRank); } if(venue.isResidential()) hasRH = true; else hasPOI = true; if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): isResidential("+venue.isResidential()+"), isPoint("+venue.isPoint()+")", venue); if(venue.isPoint() && document.getElementById('_allignToHN').checked) { if(venue.isResidential()) { var oldCoord = venue.geometry.clone(); var newCoord = Waze.model.houseNumbers.objects[key].numbers[i].geometry.clone(); if ((oldCoord.x.toFixed(1) !== (newCoord.x+1).toFixed(1)) || (oldCoord.y.toFixed(1) !== newCoord.y.toFixed(1))) { newCoord.x++; if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): move residential", oldCoord, newCoord); var wazeActionUpdateFeatureGeometry = require("Waze/Action/UpdateFeatureGeometry"); var action = new wazeActionUpdateFeatureGeometry(venue, Waze.model.venues, oldCoord, newCoord); Waze.model.actionManager.add(action); } } else { var oldCoord = venue.geometry.clone(); var newCoord = Waze.model.houseNumbers.objects[key].numbers[i].geometry.clone(); if ((oldCoord.x.toFixed(1) !== (newCoord.x-1).toFixed(1)) || (oldCoord.y.toFixed(1) !== newCoord.y.toFixed(1))) { newCoord.x--; if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): move poi", oldCoord, newCoord); var wazeActionUpdateFeatureGeometry = require("Waze/Action/UpdateFeatureGeometry"); var action = new wazeActionUpdateFeatureGeometry(venue, Waze.model.venues, oldCoord, newCoord); Waze.model.actionManager.add(action); } } } if(number.indexOf("/") !== -1 || hasChar(number)) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): has char or '/'("+number+"), skip creating RH"); hasRH = true; } } if(!venue.isPoint() && document.getElementById('_updatePlaces').checked) { if(venue.geometry.intersects(Waze.model.houseNumbers.objects[key].numbers[i].geometry)) { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): HN ("+number+") in POI area", Waze.model.houseNumbers.objects[key].numbers[i].geometry, venue.geometry); var state = updateLandmark(venue, address.city.attributes.name, address.street.name, number); hasPOI = (hasPOI) ? hasPOI : state[0]; hasRH = (hasRH) ? hasRH : state[1]; } else { if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): HN NOT in POI area", Waze.model.houseNumbers.objects[key].numbers[i].geometry, venue.geometry); } } } if(WME_ADR_debug) console.log("WME-ADR: addPOIs(): hasRH: " + hasRH + ", hasPOI: " + hasPOI + ", hasChar: " + (number.indexOf("/") !== -1 || hasChar(number))); if(!hasPOI && (document.getElementById('_createPOI').checked || (number.indexOf("/") !== -1 || hasChar(number)))) { createPOI( { x: Waze.model.houseNumbers.objects[key].numbers[i].geometry.x, y: Waze.model.houseNumbers.objects[key].numbers[i].geometry.y, streetName: address.street.name, houseNumber: number, cityName: address.city.attributes.name }, false); } if(!hasRH && document.getElementById('_createRH').checked) { createPOI( { x: Waze.model.houseNumbers.objects[key].numbers[i].geometry.x, y: Waze.model.houseNumbers.objects[key].numbers[i].geometry.y, streetName: address.street.name, houseNumber: number, cityName: address.city.attributes.name }, true); } } } } }, 3000); } function updateLandmark(venue, cityName, streetName, number) { if(WME_ADR_debug) console.log("WME-ADR: --- updateLandmark("+cityName+", "+streetName+", "+number+")", venue); var hasPOI = false; var hasRH = false; if(venue.getAddress().attributes.street.name != streetName || venue.getAddress().attributes.houseNumber != number // || venue.attributes.name != number // || venue.attributes.name.indexOf(number) !== 0 // номер не в начале || venue.attributes.name === "" // не заполнено имя || (document.getElementById('_updateLock').checked && venue.attributes.lockRank < document.getElementById('_lockLevel').selectedIndex) ) { var haveChanges = false; hasPOI = true; if((venue.getAddress().attributes.street.name != streetName && streetName.indexOf(" ") == -1) || address.city.attributes.name.indexOf(cityName) != -1) { var newAddressAtts = { streetName: streetName, emptyStreet: false, cityName: (address.city.attributes.name.indexOf(cityName) != -1) ? address.city.attributes.name : cityName, emptyCity: false, stateID: address.state.id, countryID: address.country.id }; Waze.model.actionManager.add(new wazeActionUpdateFeatureAddress(venue, newAddressAtts,{streetIDField: 'streetID'})); haveChanges = true; if(WME_ADR_debug && address.city.attributes.name !== newAddressAtts.cityName) console.log("WME-ADR: updateLandmark(): City '"+address.city.attributes.name+"' -> '"+cityName+"'"); if(WME_ADR_debug && venue.getAddress().attributes.street.name != streetName) console.log("WME-ADR: updateLandmark(): City '"+venue.getAddress().attributes.street.name+"' -> '"+streetName+"'"); } var newAtts = {}; if(venue.attributes.houseNumber != number.toString() && number.indexOf(" ") == -1) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): HN '"+venue.attributes.houseNumber+"' -> '"+number+"'"); newAtts.houseNumber = number; haveChanges = true; } if(/*venue.attributes.name.indexOf(number) !== 0 ||*/ venue.attributes.name === "") { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): Name '"+venue.attributes.name+"' -> '"+number+"'"); newAtts.name = number; haveChanges = true; } var aliases = venue.attributes.aliases; if(hasChar(number)) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): has char ("+number+")"); hasRH = true; var length = venue.attributes.aliases.length; var street = number + " " + streetName; var hasAliasAddress = false; for(var ia = 0; ia < length; ia++) { if(street == venue.attributes.aliases[ia]) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): alias exists '"+street+"'"); hasAliasAddress = true; } } if(!hasAliasAddress) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): add alias '"+street+"'"); aliases.push(street); haveChanges = true; } if((address.country.id == 37 || address.country.id == 186) && number.indexOf("/") != -1) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): has '/' ("+number+")"); hasAliasAddress = false; var street = number.replace('/', 'к') + " " + streetName; for(var ia = 0; ia < length; ia++) { if(street == venue.attributes.aliases[ia]) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): alias exists '"+street+"'"); hasAliasAddress = true; } } if(!hasAliasAddress) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): add alias '"+street+"'"); aliases.push(street); haveChanges = true; } hasAliasAddress = false; var street = number.replace('/', ' корпус ') + " " + streetName; for(var ia = 0; ia < length; ia++) { if(street == venue.attributes.aliases[ia]) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): alias exists '"+street+"'"); hasAliasAddress = true; } } if(!hasAliasAddress) { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): add alias '"+street+"'"); aliases.push(street); haveChanges = true; } } } if(haveChanges) { newAtts.aliases = aliases; newAtts.lockRank = document.getElementById('_lockLevel').selectedIndex; Waze.model.actionManager.add(new wazeActionUpdateObject(venue, newAtts)); POIs.push(venue); if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): POI updated (hasRH: " + hasRH + ", hasPOI: " + hasPOI+ ")", venue); } } else { if(WME_ADR_debug) console.log("WME-ADR: updateLandmark(): NOT changed POI=HN('"+venue.getAddress().attributes.street.name+"' = '"+streetName+"', "+ "'"+venue.getAddress().attributes.houseNumber+"' = '"+number+"', "+ "'"+venue.attributes.name+"' = '"+number+"', )"); } return [hasPOI, hasRH]; } 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; default: return false; } } function hasChar(number) { var reg = /[а-яА-Яa-zA-Z/-]/; switch(true) { case reg.test(number): return true; default: return false; } } function getElementsByClassName(classname, node) { if(!node) node = document.getElementsByTagName("body")[0]; var a = []; var re = new RegExp('\\b' + classname + '\\b'); var els = node.getElementsByTagName("*"); for (var i=0,j=els.length; i<j; i++) if (re.test(els[i].className)) a.push(els[i]); return a; } } altAddress_bootstrap();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址