Skip to content

Instantly share code, notes, and snippets.

@vtnerd91
Last active November 9, 2015 01:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vtnerd91/4ecfafed557d30051347 to your computer and use it in GitHub Desktop.
Save vtnerd91/4ecfafed557d30051347 to your computer and use it in GitHub Desktop.
Remove the city from segments in the Waze Map Editor
(function () {
var count = 0;
var thisUser = W.loginManager.user;
if (thisUser === null)
return;
// var usrRank = thisUser.normalizedLevel;
var UpdateObject;
var UpdateSegmentAddress;
var AddAlternateStreet;
var cityName;
var segs;
//Maximum number of segments to edit at a time.
var maxSegmentCount = 50;
if (typeof (require) !== "undefined") {
UpdateObject = require("Waze/Action/UpdateObject");
AddAlternateStreet = require("Waze/Action/AddAlternateStreet");
try {
UpdateSegmentAddress = require("Waze/Action/UpdateSegmentAddress");
} catch (e) {}
if (typeof(UpdateSegmentAddress) != "function") {
UpdateSegmentAddress = require("Waze/Action/UpdateFeatureAddress");
}
}
else {
UpdateObject = W.Action.UpdateObject;
AddAlternateStreet = W.Action.AddAlternateStreet;
UpdateSegmentAddress = W.Action.UpdateSegmentAddress;
}
function onScreen(obj) {
if (obj.geometry) {
return (W.map.getExtent().intersectsBounds(obj.geometry.getBounds()))
}
return (false)
}
function removeCity(seg, streetId, isAlt) {
var street = W.model.streets.get(streetId);
if (street != null) {
var cityID = street.cityID;
if (cityID != null) {
var city = W.model.cities.get(cityID);
if (city.name == cityName) {
if (!seg.isGeometryEditable()) {
console.log("Cannot edit segment " + seg.attributes.id);
return false;
}
else {
var attr;
if (!isAlt) {
segs.push(seg);
count++;
attr = {
countryID: city.countryID,
stateID: city.stateID,
emptyCity: true
};
if (street.name == null) {
attr.emptyStreet = true;
}
else {
attr.streetName = street.name;
}
//Update the city for an existing segment.
var u = new UpdateSegmentAddress(seg, attr, { streetIDField: "primaryStreetID" });
W.model.actionManager.add(u);
}
else {
//Remove the alternate street for this segment
var u = new UpdateObject(seg, { streetIDs: seg.attributes.streetIDs.remove(street.id) });
W.model.actionManager.add(u);
attr = {
emptyCity: true
};
if (street.name == null) {
attr.emptyStreet = true;
}
else {
attr.streetName = street.name;
}
//Add a new alternate street with a blank city
var addAlt = new AddAlternateStreet(seg, attr);
W.model.actionManager.add(addAlt);
}
}
}
}
}
return true;
}
cityName = prompt("Please enter city name to remove.");
if (cityName != null) {
segs = new Array();
for (var seg in W.model.segments.objects) {
var segment = W.model.segments.get(seg);
if (segment != null) {
if (count < maxSegmentCount && onScreen(segment)) {
var sid = segment.attributes.primaryStreetID;
if (removeCity(segment, sid, false)) {
if (segment.attributes.streetIDs != null) {
for (var ix = 0; ix < segment.attributes.streetIDs.length; ix++) {
removeCity(segment, segment.attributes.streetIDs[ix], true);
}
}
}
}
}
}
//W.selectionManager.select(segs);
}
})();
(function(){var k=0;var j=W.loginManager.user;if(j===null){return}var h;var m;var b;var n;var c;var p=50;if(typeof(require)!=="undefined"){h=require("Waze/Action/UpdateObject");b=require("Waze/Action/AddAlternateStreet");try{m=require("Waze/Action/UpdateSegmentAddress")}catch(l){}if(typeof(m)!="function"){m=require("Waze/Action/UpdateFeatureAddress")}}else{h=W.Action.UpdateObject;b=W.Action.AddAlternateStreet;m=W.Action.UpdateSegmentAddress}function o(e){if(e.geometry){return(W.map.getExtent().intersectsBounds(e.geometry.getBounds()))}return(false)}function f(s,v,r){var e=W.model.streets.get(v);if(e!=null){var y=e.cityID;if(y!=null){var q=W.model.cities.get(y);if(q.name==n){if(!s.isGeometryEditable()){console.log("Cannot edit segment "+s.attributes.id);return false}else{var w;if(!r){c.push(s);k++;w={countryID:q.countryID,stateID:q.stateID,emptyCity:true};if(e.name==null){w.emptyStreet=true}else{w.streetName=e.name}var x=new m(s,w,{streetIDField:"primaryStreetID"});W.model.actionManager.add(x)}else{var x=new h(s,{streetIDs:s.attributes.streetIDs.remove(e.id)});W.model.actionManager.add(x);w={emptyCity:true};if(e.name==null){w.emptyStreet=true}else{w.streetName=e.name}var t=new b(s,w);W.model.actionManager.add(t)}}}}}return true}n=prompt("Please enter city name to remove.");if(n!=null){c=new Array();for(var g in W.model.segments.objects){var i=W.model.segments.get(g);if(i!=null){if(k<p&&o(i)){var a=i.attributes.primaryStreetID;if(f(i,a,false)){if(i.attributes.streetIDs!=null){for(var d=0;d<i.attributes.streetIDs.length;d++){f(i,i.attributes.streetIDs[d],true)}}}}}}}})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment