Test vector tile templates against OSM's imagery blacklist

This commit is contained in:
Bryan Housel
2018-08-25 13:41:43 -04:00
parent 35593c3b25
commit c28c3ba57b
2 changed files with 30 additions and 7 deletions
+1 -4
View File
@@ -172,10 +172,7 @@ export function rendererBackground(context) {
var data = context.layers().layer('data');
if (data && data.enabled() && data.hasData()) {
// Include a string like '.gpx data file' or '.geojson data file'
var match = data.getSrc().match(/(kml|gpx|pbf|mvt|(?:geo)?json)$/i);
var extension = match ? ('.' + match[0].toLowerCase() + ' ') : '';
imageryUsed.push(extension + 'data file');
imageryUsed.push(data.getSrc());
}
var streetside = context.layers().layer('streetside');
+29 -3
View File
@@ -350,7 +350,7 @@ export function svgData(projection, context, dispatch) {
if (!_isEmpty(gj)) {
_geojson = ensureIDs(gj);
_src = src || 'unknown.geojson';
_src = extension + ' data file';
this.fitZoom();
}
@@ -387,13 +387,39 @@ export function svgData(projection, context, dispatch) {
};
drawData.template = function(val) {
drawData.template = function(val, src) {
if (!arguments.length) return _template;
// test source against OSM imagery blacklists..
var osm = context.connection();
if (osm) {
var blacklists = osm.imageryBlacklists();
var fail = false;
var tested = 0;
var regex;
for (var i = 0; i < blacklists.length; i++) {
try {
regex = new RegExp(blacklists[i]);
fail = regex.test(val);
tested++;
if (fail) break;
} catch (e) {
/* noop */
}
}
// ensure at least one test was run.
if (!tested) {
regex = new RegExp('.*\.google(apis)?\..*/(vt|kh)[\?/].*([xyz]=.*){3}.*');
fail = regex.test(val);
}
}
_template = val;
_fileList = null;
_geojson = null;
_src = 'vector tiles';
_src = src || 'vectortile:' + val;
dispatch.call('change');
return this;