return new osmNode({
id: uid,
visible: typeof obj.visible === 'boolean' ? obj.visible : true,
- version: obj.version.toString(),
- changeset: obj.changeset.toString(),
+ version: obj.version && obj.version.toString(),
+ changeset: obj.changeset && obj.changeset.toString(),
timestamp: obj.timestamp,
user: obj.user,
- uid: obj.uid.toString(),
+ uid: obj.uid && obj.uid.toString(),
loc: [parseFloat(obj.lon), parseFloat(obj.lat)],
tags: obj.tags
});
return new osmWay({
id: uid,
visible: typeof obj.visible === 'boolean' ? obj.visible : true,
- version: obj.version.toString(),
- changeset: obj.changeset.toString(),
+ version: obj.version && obj.version.toString(),
+ changeset: obj.changeset && obj.changeset.toString(),
timestamp: obj.timestamp,
user: obj.user,
- uid: obj.uid.toString(),
+ uid: obj.uid && obj.uid.toString(),
tags: obj.tags,
nodes: getNodesJSON(obj)
});
return new osmRelation({
id: uid,
visible: typeof obj.visible === 'boolean' ? obj.visible : true,
- version: obj.version.toString(),
- changeset: obj.changeset.toString(),
+ version: obj.version && obj.version.toString(),
+ changeset: obj.changeset && obj.changeset.toString(),
timestamp: obj.timestamp,
user: obj.user,
- uid: obj.uid.toString(),
+ uid: obj.uid && obj.uid.toString(),
tags: obj.tags,
members: getMembersJSON(obj)
});
// Guess a type based on the tokens present in the template
// (This is for 'custom' source, where we don't know)
if (!source.type) {
- if (/\{(proj|wkid|bbox)\}/.test(_template)) {
+ if (/SERVICE=WMS|\{(proj|wkid|bbox)\}/.test(_template)) {
source.type = 'wms';
source.projection = 'EPSG:3857'; // guess
} else if (/\{(x|y)\}/.test(_template)) {
switch (key) {
case 'width':
case 'height':
- return tileSize;
+ return tileSize;
case 'proj':
- return projection;
+ return projection;
case 'wkid':
- return projection.replace(/^EPSG:/, '');
+ return projection.replace(/^EPSG:/, '');
case 'bbox':
- return minXmaxY.x + ',' + maxXminY.y + ',' + maxXminY.x + ',' + minXmaxY.y;
+ // WMS 1.3 flips x/y for some coordinate systems including EPSG:4326 - #7557
+ if (projection === 'EPSG:4326' &&
+ // The CRS parameter implies version 1.3 (prior versions use SRS)
+ /VERSION=1.3|CRS={proj}/.test(source.template())) {
+ return maxXminY.y + ',' + minXmaxY.x + ',' + minXmaxY.y + ',' + maxXminY.x;
+ } else {
+ return minXmaxY.x + ',' + maxXminY.y + ',' + maxXminY.x + ',' + minXmaxY.y;
+ }
case 'w':
- return minXmaxY.x;
+ return minXmaxY.x;
case 's':
- return maxXminY.y;
+ return maxXminY.y;
case 'n':
- return maxXminY.x;
+ return maxXminY.x;
case 'e':
- return minXmaxY.y;
+ return minXmaxY.y;
default:
- return token;
+ return token;
}
});
point: _t('modes.add_point.title'),
line: _t('modes.add_line.title'),
area: _t('modes.add_area.title'),
- note: _t('modes.add_note.title'),
+ note: _t('modes.add_note.label'),
delete: _t('operations.delete.title'),
move: _t('operations.move.title'),
orthogonalize: _t('operations.orthogonalize.title'),
var context = utilRebind({}, dispatch$1, 'on');
var _deferred = new Set();
- context.version = '2.18.3';
+ context.version = '2.18.4';
context.privacyVersion = '20200407';
// iD will alter the hash so cache the parameters intended to setup the session