This repository has been archived by the owner on Apr 26, 2018. It is now read-only.
forked from waze-ru/wme_assist
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathscaner.js
99 lines (81 loc) · 3.04 KB
/
scaner.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// ==UserScript==
// @name WME_Assist_Scanner
// @author borman84 (Boris Molodenkov)
// @description Waze Map Editor Assist Scanner
// @match https://world.waze.com/editor/*
// @match https://*.waze.com/editor/*
// @match https://*.waze.com/*/editor/*
// @match https://world.waze.com/map-editor/*
// @match https://world.waze.com/beta_editor/*
// @match https://www.waze.com/map-editor/*
// @grant none
// @include https://editor-beta.waze.com/*
// @include https://*.waze.com/editor/editor/*
// @include https://*.waze.com/*/editor/*
// @version 0.5.0
// @namespace https://greasyfork.org/users/20609
// ==/UserScript==
var WME_Assist = WME_Assist || {}
WME_Assist.Scaner = function (wazeapi) {
var model = wazeapi.model;
var map = wazeapi.map;
var controller = wazeapi.controller;
var getData = function (e, cb) {
console.log(e);
$.get(wazeapi.Config.paths.features, e).done(cb);
}
var splitExtent = function (extent, zoom) {
var result = [];
var ratio = map.getResolution() / map.getResolutionForZoom(zoom);
var dx = extent.getWidth() / ratio;
var dy = extent.getHeight() / ratio;
var x, y;
for (x = extent.left; x < extent.right; x += dx) {
for (y = extent.bottom; y < extent.top; y += dy) {
var bounds = new OpenLayers.Bounds();
bounds.extend(new OpenLayers.LonLat(x, y));
bounds.extend(new OpenLayers.LonLat(x + dx, y + dy));
result.push(bounds);
}
}
return result;
}
var zoomToRoadType = function (zoom) {
var s = wazeapi.Config.segments.zoomToRoadType[zoom] || [];
if (-1 === s) {
s = W.Config.segments.allTypes;
}
var r = [];
Object.keys(wazeapi.Config.segments.zoomToRoadType).forEach(function (t) {
t = parseInt(t, 10);
var i = s.contains(t);
if (i) {
r.push(t);
}
})
return (r.length == 0) ? null : { roadTypes: s.toString() }
}
this.scan = function (bounds, zoom, analyze, progress) {
var boundsArray = splitExtent(bounds, zoom);
var completed = 0;
if (boundsArray.length > 20 && !confirm('Script will scan ' + boundsArray.length + ' peaces. Are you OK?')) {
return;
}
progress = progress || function () {}
WME_Assist.series(boundsArray, 0, function (bounds, next) {
var peace = bounds.transform(map.getProjectionObject(), controller.segmentProjection);
var e = {
bbox: peace.toBBOX(),
language: I18n.locale,
venueFilter: '1',
venueLevel: wazeapi.Config.venues.zoomToSize[zoom],
};
OL.Util.extend(e, zoomToRoadType(zoom));
getData(e, function (data) {
analyze(peace, zoom, data);
progress(++completed*100/boundsArray.length);
next();
});
});
}
}