From 2a8f08b4909642936f073a59df7a0878a44df573 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Mon, 30 Jun 2014 19:55:40 -0700 Subject: [PATCH 01/18] migration to 3.1 --- bin/gl-style-migrate | 23 ++++++++++++---- migrations/v3.1.js | 62 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 migrations/v3.1.js diff --git a/bin/gl-style-migrate b/bin/gl-style-migrate index 283d9bf..621ea85 100755 --- a/bin/gl-style-migrate +++ b/bin/gl-style-migrate @@ -8,13 +8,26 @@ var beautify = require('js-beautify').js_beautify, var data = JSON.parse(fs.readFileSync(argv._[0])); -if (data.version !== 2) { - console.warn('style version !== 2'); - process.exit(1); + +var migrated = false; + +if (data.version === 2) { + // Migrate to v3 + data = require('../migrations/v3')(data); + data = require('../migrations/v3.1')(data); + migrated = true; } -// Migrate to v3 -data = require('../migrations/v3')(data); +if (data.version === 3) { + // Migrate to v3.1 + data = require('../migrations/v3.1')(data); + migrated = true; +} + +if (!migrated) { + console.warn('cannot migrate from', data.version); + process.exit(1); +} function format(json) { var str = beautify(JSON.stringify(json), { diff --git a/migrations/v3.1.js b/migrations/v3.1.js new file mode 100644 index 0000000..ff82819 --- /dev/null +++ b/migrations/v3.1.js @@ -0,0 +1,62 @@ +'use strict'; + +//var ref = require('../lib/reference')('v3'); + +module.exports = function(v3) { + //v3.version = 3.1; + v3.layers.forEach(convertLayer); + return v3; +}; + +var newTypes = { + point: 'Point', + line: 'LineString', + polygon: 'Polygon' +}; + + +function convertLayer(layer) { + var render = layer.render; + + if (!render) return; + + if (render.filter && render.filter.$type) { + render.filter.$type = newTypes[render.filter.$type]; + } + + if (render.type === 'text' || render.type === 'icon') { + render.type = 'symbol'; + + rename(render, 'icon-spacing', 'symbol-min-distance'); + rename(render, 'text-min-distance', 'symbol-min-distance'); + rename(render, 'icon-allow-overlap', 'symbol-allow-overlap'); + rename(render, 'text-allow-overlap', 'symbol-allow-overlap'); + rename(render, 'icon-ignore-placement', 'symbol-ignore-placement'); + rename(render, 'text-ignore-placement', 'symbol-ignore-placement'); + + if (layer.style && layer.style['icon-rotate-anchor']) { + render['symbol-rotation-alignment'] = layer.style['icon-rotate-anchor']; + delete layer.style['icon-rotate-anchor']; + } + + if (render['text-path' === 'curve']) { + render['symbol-rotation-alignment'] = 'map'; + render.placement = 'line'; + } + + if (render['text-halo-width']) { + } + if (render['text-halo-blur']) { + } + + delete render['text-path']; + } + if (layer.layers) layer.layers.forEach(convertLayer); +} + +function rename(render, from, to) { + if (render[from]) { + render[to] = render[from]; + delete render[from]; + } +} From 7375c3e22025aff7bda560c23431b0fbb0512d94 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Tue, 1 Jul 2014 11:29:59 -0700 Subject: [PATCH 02/18] Fix layer.filter for conversion --- migrations/v3.1.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migrations/v3.1.js b/migrations/v3.1.js index ff82819..dbbafcb 100644 --- a/migrations/v3.1.js +++ b/migrations/v3.1.js @@ -20,8 +20,8 @@ function convertLayer(layer) { if (!render) return; - if (render.filter && render.filter.$type) { - render.filter.$type = newTypes[render.filter.$type]; + if (layer.filter && layer.filter.$type) { + layer.filter.$type = newTypes[layer.filter.$type]; } if (render.type === 'text' || render.type === 'icon') { From 2ae7568ed9d140c34f653935acbac8c62ee68326 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Tue, 1 Jul 2014 18:14:43 -0700 Subject: [PATCH 03/18] notworking: working on converting size fns to halo-width fns where size spec by constants --- migrations/v3.1.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/migrations/v3.1.js b/migrations/v3.1.js index dbbafcb..a479e31 100644 --- a/migrations/v3.1.js +++ b/migrations/v3.1.js @@ -2,8 +2,11 @@ //var ref = require('../lib/reference')('v3'); +var vc; + module.exports = function(v3) { //v3.version = 3.1; + vc = v3.constants; v3.layers.forEach(convertLayer); return v3; }; @@ -14,7 +17,6 @@ var newTypes = { polygon: 'Polygon' }; - function convertLayer(layer) { var render = layer.render; @@ -44,9 +46,29 @@ function convertLayer(layer) { render.placement = 'line'; } - if (render['text-halo-width']) { + var convertHalo = function(haloWidth, textSize) { + return Number(((6 - haloWidth * 8) * textSize / 24).toFixed(2)); + } + + if (layer.style && layer.style['text-halo-width']) { + // if (layer.style['text-size']) console.log(layer.style['text-size']); + if (typeof(layer.style['text-size']) == 'string' && layer.style['text-size'].indexOf('@') != -1) console.log(vc[layer.style['text-size']]); + // cool so this works ^^ fix this vv + var textSize = layer.style['text-size'] ? typeof(layer.style['text-size']) == 'number' : vc[layer.style['text-size']]; + if (typeof(textSize) == 'number') { + layer.style['text-halo-width'] = convertHalo(layer.style['text-halo-width'], textSize) + } else if (textSize && textSize['stops']) { + var stops = [] + textSize['stops'].forEach(function(stop) { + stops.push([stop[0], convertHalo(layer.style['text-halo-width'], stop[1])]); + }) + layer.style['text-halo-width'] = { + "fn": "stops", + "stops": stops + } + } } - if (render['text-halo-blur']) { + if (layer.style && layer.style['text-halo-blur']) { } delete render['text-path']; From a8652d2de93818232a2d619a5899911185830c95 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Wed, 2 Jul 2014 10:27:37 -0700 Subject: [PATCH 04/18] Converts text-halo-width to pixels --- migrations/v3.1.js | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/migrations/v3.1.js b/migrations/v3.1.js index a479e31..63533e0 100644 --- a/migrations/v3.1.js +++ b/migrations/v3.1.js @@ -50,24 +50,35 @@ function convertLayer(layer) { return Number(((6 - haloWidth * 8) * textSize / 24).toFixed(2)); } - if (layer.style && layer.style['text-halo-width']) { - // if (layer.style['text-size']) console.log(layer.style['text-size']); - if (typeof(layer.style['text-size']) == 'string' && layer.style['text-size'].indexOf('@') != -1) console.log(vc[layer.style['text-size']]); - // cool so this works ^^ fix this vv - var textSize = layer.style['text-size'] ? typeof(layer.style['text-size']) == 'number' : vc[layer.style['text-size']]; - if (typeof(textSize) == 'number') { - layer.style['text-halo-width'] = convertHalo(layer.style['text-halo-width'], textSize) - } else if (textSize && textSize['stops']) { - var stops = [] - textSize['stops'].forEach(function(stop) { - stops.push([stop[0], convertHalo(layer.style['text-halo-width'], stop[1])]); - }) - layer.style['text-halo-width'] = { - "fn": "stops", - "stops": stops + // convert text-halo-width to pixels + for (var classname in layer) { + if (classname.indexOf('style') == 0) { + var style = layer[classname]; + if (style['text-halo-width']) { + // handle 3 cases: text-size as constant, text-size as #, no text-size but max-text-size + var textSize = (typeof(style['text-size']) == 'string' && + style['text-size'].indexOf('@') != -1) ? + vc[style['text-size']] : + (style['text-size'] ? + style['text-size'] : + layer.render['text-max-size']); + + if (typeof(textSize) == 'number') { + style['text-halo-width'] = convertHalo(style['text-halo-width'], textSize) + } else if (textSize && textSize['stops']) { + var stops = [] + textSize['stops'].forEach(function(stop) { + stops.push([stop[0], convertHalo(style['text-halo-width'], stop[1])]); + }) + style['text-halo-width'] = { + "fn": "stops", + "stops": stops + } + } } } } + if (layer.style && layer.style['text-halo-blur']) { } From 8088f977c192cd23e40429e6948b741b2089fbe3 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Wed, 2 Jul 2014 11:00:35 -0700 Subject: [PATCH 05/18] travis-ify JS --- migrations/v3.1.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/migrations/v3.1.js b/migrations/v3.1.js index 63533e0..9182645 100644 --- a/migrations/v3.1.js +++ b/migrations/v3.1.js @@ -48,11 +48,11 @@ function convertLayer(layer) { var convertHalo = function(haloWidth, textSize) { return Number(((6 - haloWidth * 8) * textSize / 24).toFixed(2)); - } + }; // convert text-halo-width to pixels for (var classname in layer) { - if (classname.indexOf('style') == 0) { + if (classname.indexOf('style') === 0) { var style = layer[classname]; if (style['text-halo-width']) { // handle 3 cases: text-size as constant, text-size as #, no text-size but max-text-size @@ -63,17 +63,21 @@ function convertLayer(layer) { style['text-size'] : layer.render['text-max-size']); + // handle text-size numbers and functions if (typeof(textSize) == 'number') { - style['text-halo-width'] = convertHalo(style['text-halo-width'], textSize) - } else if (textSize && textSize['stops']) { - var stops = [] - textSize['stops'].forEach(function(stop) { - stops.push([stop[0], convertHalo(style['text-halo-width'], stop[1])]); - }) + style['text-halo-width'] = convertHalo(style['text-halo-width'], textSize); + } else if (textSize && textSize.stops) { + var stops = []; + for (var stop in textSize.stops) { + stops.push( + [textSize.stops[stop][0], + convertHalo(style['text-halo-width'], textSize.stops[stop][1])] + ); + } style['text-halo-width'] = { "fn": "stops", "stops": stops - } + }; } } } From 3d58837fcf0d2e3bce5ac4fc32d20fc59ef0a183 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Wed, 2 Jul 2014 14:21:49 -0700 Subject: [PATCH 06/18] Captures exponential and linear functions in text-halo migrations, constants in text-halo-width --- migrations/v3.1.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/migrations/v3.1.js b/migrations/v3.1.js index 9182645..c9cec7b 100644 --- a/migrations/v3.1.js +++ b/migrations/v3.1.js @@ -55,6 +55,9 @@ function convertLayer(layer) { if (classname.indexOf('style') === 0) { var style = layer[classname]; if (style['text-halo-width']) { + if (typeof(style['text-halo-width']) == 'string' && style['text-halo-width'].indexOf('@') != -1) { + style['text-halo-width'] = vc[style['text-halo-width']]; + } // handle 3 cases: text-size as constant, text-size as #, no text-size but max-text-size var textSize = (typeof(style['text-size']) == 'string' && style['text-size'].indexOf('@') != -1) ? @@ -66,7 +69,7 @@ function convertLayer(layer) { // handle text-size numbers and functions if (typeof(textSize) == 'number') { style['text-halo-width'] = convertHalo(style['text-halo-width'], textSize); - } else if (textSize && textSize.stops) { + } else if (textSize && textSize.fn && textSize.fn == 'stops') { var stops = []; for (var stop in textSize.stops) { stops.push( @@ -78,14 +81,19 @@ function convertLayer(layer) { "fn": "stops", "stops": stops }; + } else if (textSize && textSize.fn && textSize.fn == ('exponential' || 'linear')) { + if (textSize.val) var val = convertHalo(style['text-halo-width'], textSize.val); + if (textSize.max) var max = convertHalo(style['text-halo-width'], textSize.max); + if (textSize.min) var min = convertHalo(style['text-halo-width'], textSize.min); + style['text-halo-width'] = textSize; + style['text-halo-width']['val'] = val; + style['text-halo-width']['max'] = max; + style['text-halo-width']['min'] = min; } } } } - if (layer.style && layer.style['text-halo-blur']) { - } - delete render['text-path']; } if (layer.layers) layer.layers.forEach(convertLayer); From 58a288e146e0ff04a2ddeea16e88eb4cfea982e1 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Wed, 2 Jul 2014 14:30:40 -0700 Subject: [PATCH 07/18] travis-ify fn migration --- migrations/v3.1.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/migrations/v3.1.js b/migrations/v3.1.js index c9cec7b..3e8db1b 100644 --- a/migrations/v3.1.js +++ b/migrations/v3.1.js @@ -82,13 +82,14 @@ function convertLayer(layer) { "stops": stops }; } else if (textSize && textSize.fn && textSize.fn == ('exponential' || 'linear')) { - if (textSize.val) var val = convertHalo(style['text-halo-width'], textSize.val); - if (textSize.max) var max = convertHalo(style['text-halo-width'], textSize.max); - if (textSize.min) var min = convertHalo(style['text-halo-width'], textSize.min); + var val; var max; var min; + if (textSize.val) val = convertHalo(style['text-halo-width'], textSize.val); + if (textSize.max) max = convertHalo(style['text-halo-width'], textSize.max); + if (textSize.min) min = convertHalo(style['text-halo-width'], textSize.min); style['text-halo-width'] = textSize; - style['text-halo-width']['val'] = val; - style['text-halo-width']['max'] = max; - style['text-halo-width']['min'] = min; + style['text-halo-width'].val = val; + style['text-halo-width'].max = max; + style['text-halo-width'].min = min; } } } From a9d6758d504a6fa10bcacbacef837066493158a1 Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Thu, 3 Jul 2014 14:13:31 +0300 Subject: [PATCH 08/18] rename v3.1 to v4 --- bin/gl-style-migrate | 6 +++--- migrations/{v3.1.js => v4.js} | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) rename migrations/{v3.1.js => v4.js} (98%) diff --git a/bin/gl-style-migrate b/bin/gl-style-migrate index 621ea85..3e45a4a 100755 --- a/bin/gl-style-migrate +++ b/bin/gl-style-migrate @@ -14,13 +14,13 @@ var migrated = false; if (data.version === 2) { // Migrate to v3 data = require('../migrations/v3')(data); - data = require('../migrations/v3.1')(data); + data = require('../migrations/v4')(data); migrated = true; } if (data.version === 3) { - // Migrate to v3.1 - data = require('../migrations/v3.1')(data); + // Migrate to v4 + data = require('../migrations/v4')(data); migrated = true; } diff --git a/migrations/v3.1.js b/migrations/v4.js similarity index 98% rename from migrations/v3.1.js rename to migrations/v4.js index 3e8db1b..ceecc5d 100644 --- a/migrations/v3.1.js +++ b/migrations/v4.js @@ -1,11 +1,11 @@ 'use strict'; -//var ref = require('../lib/reference')('v3'); +//var ref = require('../lib/reference')('v4'); var vc; module.exports = function(v3) { - //v3.version = 3.1; + v3.version = 4; vc = v3.constants; v3.layers.forEach(convertLayer); return v3; From afd9bf5295a028aedf5f06d9a2e9ff018950e395 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 3 Jul 2014 15:41:04 -0700 Subject: [PATCH 09/18] Migrate glyphs to top level https://github.com/mapbox/mapbox-gl-style-spec/pull/77 --- migrations/v4.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/migrations/v4.js b/migrations/v4.js index ceecc5d..bab4078 100644 --- a/migrations/v4.js +++ b/migrations/v4.js @@ -7,6 +7,13 @@ var vc; module.exports = function(v3) { v3.version = 4; vc = v3.constants; + for (var id in v3.sources) { + var source = v3.sources[id]; + if (source.glyphs) { + v3.glyphs = source.glyphs; + delete source.glyphs; + } + } v3.layers.forEach(convertLayer); return v3; }; From a869368cfa53fae434b4402cf26e90e7af373c12 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 3 Jul 2014 16:41:42 -0700 Subject: [PATCH 10/18] Validate v4 --- lib/validate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/validate.js b/lib/validate.js index 0886ddf..2b7b164 100644 --- a/lib/validate.js +++ b/lib/validate.js @@ -6,7 +6,7 @@ var parseCSSColor = require('csscolorparser').parseCSSColor; module.exports = {}; module.exports.value = value; -['v2','v3'].forEach(function(version) { +['v2','v3','v4'].forEach(function(version) { var ref = reference(version); // Create validator for version module.exports[version] = validator(ref); From 73ca80f24e173a9fb197e04456c55ed51b4968ed Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 3 Jul 2014 16:53:05 -0700 Subject: [PATCH 11/18] Git URL for spec --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2ecf55d..040bfed 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "coveralls": "~2.10.0" }, "dependencies": { - "mapbox-gl-style-spec": "0.0.2", + "mapbox-gl-style-spec": "git://github.com/mapbox/mapbox-gl-style-spec.git", "js-beautify": "^1.4.2", "minimist": "0.0.8", "jsonlint-lines": "~1.6.0", From 8b85a6c77ceb8fb96c67357eeac022be28de7b93 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 3 Jul 2014 16:23:12 -0700 Subject: [PATCH 12/18] Promote render `type` property to parent layer --- migrations/v4.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/migrations/v4.js b/migrations/v4.js index bab4078..6881a1d 100644 --- a/migrations/v4.js +++ b/migrations/v4.js @@ -29,12 +29,15 @@ function convertLayer(layer) { if (!render) return; + layer.type = render.type; + delete render.type; + if (layer.filter && layer.filter.$type) { layer.filter.$type = newTypes[layer.filter.$type]; } - if (render.type === 'text' || render.type === 'icon') { - render.type = 'symbol'; + if (layer.type === 'text' || layer.type === 'icon') { + layer.type = 'symbol'; rename(render, 'icon-spacing', 'symbol-min-distance'); rename(render, 'text-min-distance', 'symbol-min-distance'); From 6c96d2658e420e5c74897b3197a82f2a660592a3 Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Mon, 7 Jul 2014 19:19:33 -0700 Subject: [PATCH 13/18] delete render property if empty after type promotion --- migrations/v4.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/migrations/v4.js b/migrations/v4.js index 6881a1d..f0bd18d 100644 --- a/migrations/v4.js +++ b/migrations/v4.js @@ -32,6 +32,11 @@ function convertLayer(layer) { layer.type = render.type; delete render.type; + if (render.type && Object.keys(render).length === 1) { // just type + delete layer.render; + return; + } + if (layer.filter && layer.filter.$type) { layer.filter.$type = newTypes[layer.filter.$type]; } From dd7a037ddbb48cd05b307ee9ba79b39632a028fd Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 8 Jul 2014 10:58:45 -0700 Subject: [PATCH 14/18] Really delete render property if empty after type promotion --- migrations/v4.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/v4.js b/migrations/v4.js index f0bd18d..5f068dd 100644 --- a/migrations/v4.js +++ b/migrations/v4.js @@ -32,7 +32,7 @@ function convertLayer(layer) { layer.type = render.type; delete render.type; - if (render.type && Object.keys(render).length === 1) { // just type + if (Object.keys(render).length === 0) { // was just type delete layer.render; return; } From 4d1ac036ea1a1e1b42c18ae3f7f1be3b236238fd Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Tue, 8 Jul 2014 11:27:52 -0700 Subject: [PATCH 15/18] these are not separate properties --- migrations/v4.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/migrations/v4.js b/migrations/v4.js index 5f068dd..24b8d0d 100644 --- a/migrations/v4.js +++ b/migrations/v4.js @@ -46,10 +46,6 @@ function convertLayer(layer) { rename(render, 'icon-spacing', 'symbol-min-distance'); rename(render, 'text-min-distance', 'symbol-min-distance'); - rename(render, 'icon-allow-overlap', 'symbol-allow-overlap'); - rename(render, 'text-allow-overlap', 'symbol-allow-overlap'); - rename(render, 'icon-ignore-placement', 'symbol-ignore-placement'); - rename(render, 'text-ignore-placement', 'symbol-ignore-placement'); if (layer.style && layer.style['icon-rotate-anchor']) { render['symbol-rotation-alignment'] = layer.style['icon-rotate-anchor']; From dea5ce60ec331cfaf3c8e2b4e40eaf697eb567c4 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Wed, 9 Jul 2014 17:09:03 -0700 Subject: [PATCH 16/18] Fix validation for arrays of functions --- lib/validate.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/validate.js b/lib/validate.js index 2b7b164..08b344c 100644 --- a/lib/validate.js +++ b/lib/validate.js @@ -98,7 +98,11 @@ function value(key, val, constants, ref, spec, errors) { for (var i = 0; i < val.length; i++) { var valspec = ref[spec.value]||spec.value; if (typeof valspec === 'string') { - pass = validateNative(key + '[' + i + ']', val[i], valspec, errors) && pass; + if (spec.function && typeof val[i] === 'object') { + pass = value(key, val[i], constants, ref, ref.function, errors); + } else { + pass = validateNative(key + '[' + i + ']', val[i], valspec, errors) && pass; + } } else { pass = value(key + '[' + i + ']', val[i], constants, ref, valspec, errors) && pass; } @@ -107,7 +111,7 @@ function value(key, val, constants, ref, spec, errors) { } else { errors.push({ message: key + ': array expected, ' + typeof val + ' found', - line: val.__line__ + line: val ? val.__line__ : null }); return false; } @@ -189,7 +193,7 @@ function validateNative(key, val, spec, errors) { if (type !== spec) { errors.push({ message: key + ': ' + spec + ' expected, ' + (typeof val) + ' found', - line: val.__line__ + line: val ? val.__line__ : null }); return false; } else { @@ -208,4 +212,3 @@ function validateEnum(key, val, spec, errors) { return true; } } - From c94fcdfabfbd593d30c0bfb8feb41f4fa57caf94 Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Thu, 10 Jul 2014 10:23:15 -0700 Subject: [PATCH 17/18] text-path: curve > symbol-placement: line, rm symbol-rotation-alignment --- migrations/v4.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/migrations/v4.js b/migrations/v4.js index 99d3e43..ce0e59f 100644 --- a/migrations/v4.js +++ b/migrations/v4.js @@ -99,13 +99,11 @@ function convertLayer(layer) { rename(render, 'text-min-distance', 'symbol-min-distance'); if (layer.style && layer.style['icon-rotate-anchor']) { - render['symbol-rotation-alignment'] = layer.style['icon-rotate-anchor']; delete layer.style['icon-rotate-anchor']; } - if (render['text-path' === 'curve']) { - render['symbol-rotation-alignment'] = 'map'; - render.placement = 'line'; + if (render['text-path'] === 'curve') { + render['symbol-placement'] = 'line'; } delete render['text-path']; From eddfcc9e6f5d2239ea9cb24b45c79b4b1db6b32a Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Thu, 10 Jul 2014 11:30:31 -0700 Subject: [PATCH 18/18] icon-size, text-align, , symbol-rotation fixes --- migrations/v4.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/migrations/v4.js b/migrations/v4.js index ce0e59f..49e79f2 100644 --- a/migrations/v4.js +++ b/migrations/v4.js @@ -41,6 +41,10 @@ function convertLayer(layer) { layer.filter.$type = newTypes[layer.filter.$type]; } + if (layer.filter && layer.filter['!'||'|'||'&'||'^'] && layer.filter['!'||'|'||'&'||'^'].$type) { + layer.filter['!'||'|'||'&'||'^'].$type = newTypes[layer.filter['!'||'|'||'&'||'^'].$type]; + } + if (layer.type === 'text' || layer.type === 'icon') { layer.type = 'symbol'; @@ -97,8 +101,11 @@ function convertLayer(layer) { rename(render, 'icon-spacing', 'symbol-min-distance'); rename(render, 'text-min-distance', 'symbol-min-distance'); + rename(render, 'text-alignment', 'text-horizontal-align'); + rename(render, 'text-vertical-alignment', 'text-vertical-align'); if (layer.style && layer.style['icon-rotate-anchor']) { + render['symbol-rotation-alignment'] = layer.style['icon-rotate-anchor']; delete layer.style['icon-rotate-anchor']; } @@ -106,6 +113,10 @@ function convertLayer(layer) { render['symbol-placement'] = 'line'; } + if (render['icon-size']) { + delete render['icon-size']; + } + delete render['text-path']; } if (layer.layers) layer.layers.forEach(convertLayer);