mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-16 22:03:37 +02:00
Merge pull request #3225 from openstreetmap/dep-osm-auth
Use osm-auth, togeojson and marked as packages
This commit is contained in:
@@ -74,9 +74,6 @@ dist/iD.js: \
|
||||
js/lib/diff3.js \
|
||||
js/lib/jxon.js \
|
||||
js/lib/lodash.js \
|
||||
js/lib/osmauth.js \
|
||||
js/lib/togeojson.js \
|
||||
js/lib/marked.js \
|
||||
js/id/start.js \
|
||||
js/id/id.js \
|
||||
$(MODULE_TARGETS) \
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
<script src='js/lib/lodash.js'></script>
|
||||
<script src='js/lib/d3.v3.js'></script>
|
||||
<script src='js/lib/osmauth.js'></script>
|
||||
<script src='js/lib/jxon.js'></script>
|
||||
<script src='js/lib/d3.combobox.js'></script>
|
||||
<script src='js/lib/d3.geo.tile.js'></script>
|
||||
@@ -28,8 +27,6 @@
|
||||
<script src='js/lib/d3-compat.js'></script>
|
||||
<script src='js/lib/bootstrap-tooltip.js'></script>
|
||||
<script src='js/lib/diff3.js'></script>
|
||||
<script src='js/lib/togeojson.js'></script>
|
||||
<script src='js/lib/marked.js'></script>
|
||||
|
||||
<script src='js/id/id.js'></script>
|
||||
|
||||
|
||||
+26917
-22035
File diff suppressed because it is too large
Load Diff
+375
-6
@@ -387,6 +387,379 @@
|
||||
};
|
||||
}
|
||||
|
||||
function createCommonjsModule(fn, module) {
|
||||
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
||||
}
|
||||
|
||||
var require$$0 = {};
|
||||
|
||||
var togeojson = createCommonjsModule(function (module, exports) {
|
||||
var toGeoJSON = (function() {
|
||||
'use strict';
|
||||
|
||||
var removeSpace = (/\s*/g),
|
||||
trimSpace = (/^\s*|\s*$/g),
|
||||
splitSpace = (/\s+/);
|
||||
// generate a short, numeric hash of a string
|
||||
function okhash(x) {
|
||||
if (!x || !x.length) return 0;
|
||||
for (var i = 0, h = 0; i < x.length; i++) {
|
||||
h = ((h << 5) - h) + x.charCodeAt(i) | 0;
|
||||
} return h;
|
||||
}
|
||||
// all Y children of X
|
||||
function get(x, y) { return x.getElementsByTagName(y); }
|
||||
function attr(x, y) { return x.getAttribute(y); }
|
||||
function attrf(x, y) { return parseFloat(attr(x, y)); }
|
||||
// one Y child of X, if any, otherwise null
|
||||
function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
|
||||
function norm(el) { if (el.normalize) { el.normalize(); } return el; }
|
||||
// cast array x into numbers
|
||||
function numarray(x) {
|
||||
for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); }
|
||||
return o;
|
||||
}
|
||||
function clean(x) {
|
||||
var o = {};
|
||||
for (var i in x) { if (x[i]) { o[i] = x[i]; } }
|
||||
return o;
|
||||
}
|
||||
// get the content of a text node, if any
|
||||
function nodeVal(x) {
|
||||
if (x) { norm(x); }
|
||||
return (x && x.textContent) || '';
|
||||
}
|
||||
// get one coordinate from a coordinate array, if any
|
||||
function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }
|
||||
// get all coordinates from a coordinate array as [[],[]]
|
||||
function coord(v) {
|
||||
var coords = v.replace(trimSpace, '').split(splitSpace),
|
||||
o = [];
|
||||
for (var i = 0; i < coords.length; i++) {
|
||||
o.push(coord1(coords[i]));
|
||||
}
|
||||
return o;
|
||||
}
|
||||
function coordPair(x) {
|
||||
var ll = [attrf(x, 'lon'), attrf(x, 'lat')],
|
||||
ele = get1(x, 'ele'),
|
||||
// handle namespaced attribute in browser
|
||||
heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'),
|
||||
time = get1(x, 'time'),
|
||||
e;
|
||||
if (ele) {
|
||||
e = parseFloat(nodeVal(ele));
|
||||
if (!isNaN(e)) {
|
||||
ll.push(e);
|
||||
}
|
||||
}
|
||||
return {
|
||||
coordinates: ll,
|
||||
time: time ? nodeVal(time) : null,
|
||||
heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null
|
||||
};
|
||||
}
|
||||
|
||||
// create a new feature collection parent object
|
||||
function fc() {
|
||||
return {
|
||||
type: 'FeatureCollection',
|
||||
features: []
|
||||
};
|
||||
}
|
||||
|
||||
var serializer;
|
||||
if (typeof XMLSerializer !== 'undefined') {
|
||||
/* istanbul ignore next */
|
||||
serializer = new XMLSerializer();
|
||||
// only require xmldom in a node environment
|
||||
} else if (typeof exports === 'object' && typeof process === 'object' && !process.browser) {
|
||||
serializer = new (require$$0.XMLSerializer)();
|
||||
}
|
||||
function xml2str(str) {
|
||||
// IE9 will create a new XMLSerializer but it'll crash immediately.
|
||||
// This line is ignored because we don't run coverage tests in IE9
|
||||
/* istanbul ignore next */
|
||||
if (str.xml !== undefined) return str.xml;
|
||||
return serializer.serializeToString(str);
|
||||
}
|
||||
|
||||
var t = {
|
||||
kml: function(doc) {
|
||||
|
||||
var gj = fc(),
|
||||
// styleindex keeps track of hashed styles in order to match features
|
||||
styleIndex = {},
|
||||
// atomic geospatial types supported by KML - MultiGeometry is
|
||||
// handled separately
|
||||
geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'],
|
||||
// all root placemarks in the file
|
||||
placemarks = get(doc, 'Placemark'),
|
||||
styles = get(doc, 'Style'),
|
||||
styleMaps = get(doc, 'StyleMap');
|
||||
|
||||
for (var k = 0; k < styles.length; k++) {
|
||||
styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16);
|
||||
}
|
||||
for (var l = 0; l < styleMaps.length; l++) {
|
||||
styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16);
|
||||
}
|
||||
for (var j = 0; j < placemarks.length; j++) {
|
||||
gj.features = gj.features.concat(getPlacemark(placemarks[j]));
|
||||
}
|
||||
function kmlColor(v) {
|
||||
var color, opacity;
|
||||
v = v || '';
|
||||
if (v.substr(0, 1) === '#') { v = v.substr(1); }
|
||||
if (v.length === 6 || v.length === 3) { color = v; }
|
||||
if (v.length === 8) {
|
||||
opacity = parseInt(v.substr(0, 2), 16) / 255;
|
||||
color = '#'+v.substr(2);
|
||||
}
|
||||
return [color, isNaN(opacity) ? undefined : opacity];
|
||||
}
|
||||
function gxCoord(v) { return numarray(v.split(' ')); }
|
||||
function gxCoords(root) {
|
||||
var elems = get(root, 'coord', 'gx'), coords = [], times = [];
|
||||
if (elems.length === 0) elems = get(root, 'gx:coord');
|
||||
for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));
|
||||
var timeElems = get(root, 'when');
|
||||
for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j]));
|
||||
return {
|
||||
coords: coords,
|
||||
times: times
|
||||
};
|
||||
}
|
||||
function getGeometry(root) {
|
||||
var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = [];
|
||||
if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); }
|
||||
if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); }
|
||||
if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); }
|
||||
for (i = 0; i < geotypes.length; i++) {
|
||||
geomNodes = get(root, geotypes[i]);
|
||||
if (geomNodes) {
|
||||
for (j = 0; j < geomNodes.length; j++) {
|
||||
geomNode = geomNodes[j];
|
||||
if (geotypes[i] === 'Point') {
|
||||
geoms.push({
|
||||
type: 'Point',
|
||||
coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))
|
||||
});
|
||||
} else if (geotypes[i] === 'LineString') {
|
||||
geoms.push({
|
||||
type: 'LineString',
|
||||
coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))
|
||||
});
|
||||
} else if (geotypes[i] === 'Polygon') {
|
||||
var rings = get(geomNode, 'LinearRing'),
|
||||
coords = [];
|
||||
for (k = 0; k < rings.length; k++) {
|
||||
coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));
|
||||
}
|
||||
geoms.push({
|
||||
type: 'Polygon',
|
||||
coordinates: coords
|
||||
});
|
||||
} else if (geotypes[i] === 'Track' ||
|
||||
geotypes[i] === 'gx:Track') {
|
||||
var track = gxCoords(geomNode);
|
||||
geoms.push({
|
||||
type: 'LineString',
|
||||
coordinates: track.coords
|
||||
});
|
||||
if (track.times.length) coordTimes.push(track.times);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return {
|
||||
geoms: geoms,
|
||||
coordTimes: coordTimes
|
||||
};
|
||||
}
|
||||
function getPlacemark(root) {
|
||||
var geomsAndTimes = getGeometry(root), i, properties = {},
|
||||
name = nodeVal(get1(root, 'name')),
|
||||
styleUrl = nodeVal(get1(root, 'styleUrl')),
|
||||
description = nodeVal(get1(root, 'description')),
|
||||
timeSpan = get1(root, 'TimeSpan'),
|
||||
extendedData = get1(root, 'ExtendedData'),
|
||||
lineStyle = get1(root, 'LineStyle'),
|
||||
polyStyle = get1(root, 'PolyStyle');
|
||||
|
||||
if (!geomsAndTimes.geoms.length) return [];
|
||||
if (name) properties.name = name;
|
||||
if (styleUrl[0] !== '#') {
|
||||
styleUrl = '#' + styleUrl;
|
||||
}
|
||||
if (styleUrl && styleIndex[styleUrl]) {
|
||||
properties.styleUrl = styleUrl;
|
||||
properties.styleHash = styleIndex[styleUrl];
|
||||
}
|
||||
if (description) properties.description = description;
|
||||
if (timeSpan) {
|
||||
var begin = nodeVal(get1(timeSpan, 'begin'));
|
||||
var end = nodeVal(get1(timeSpan, 'end'));
|
||||
properties.timespan = { begin: begin, end: end };
|
||||
}
|
||||
if (lineStyle) {
|
||||
var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))),
|
||||
color = linestyles[0],
|
||||
opacity = linestyles[1],
|
||||
width = parseFloat(nodeVal(get1(lineStyle, 'width')));
|
||||
if (color) properties.stroke = color;
|
||||
if (!isNaN(opacity)) properties['stroke-opacity'] = opacity;
|
||||
if (!isNaN(width)) properties['stroke-width'] = width;
|
||||
}
|
||||
if (polyStyle) {
|
||||
var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))),
|
||||
pcolor = polystyles[0],
|
||||
popacity = polystyles[1],
|
||||
fill = nodeVal(get1(polyStyle, 'fill')),
|
||||
outline = nodeVal(get1(polyStyle, 'outline'));
|
||||
if (pcolor) properties.fill = pcolor;
|
||||
if (!isNaN(popacity)) properties['fill-opacity'] = popacity;
|
||||
if (fill) properties['fill-opacity'] = fill === '1' ? 1 : 0;
|
||||
if (outline) properties['stroke-opacity'] = outline === '1' ? 1 : 0;
|
||||
}
|
||||
if (extendedData) {
|
||||
var datas = get(extendedData, 'Data'),
|
||||
simpleDatas = get(extendedData, 'SimpleData');
|
||||
|
||||
for (i = 0; i < datas.length; i++) {
|
||||
properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
|
||||
}
|
||||
for (i = 0; i < simpleDatas.length; i++) {
|
||||
properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
|
||||
}
|
||||
}
|
||||
if (geomsAndTimes.coordTimes.length) {
|
||||
properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ?
|
||||
geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes;
|
||||
}
|
||||
var feature = {
|
||||
type: 'Feature',
|
||||
geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : {
|
||||
type: 'GeometryCollection',
|
||||
geometries: geomsAndTimes.geoms
|
||||
},
|
||||
properties: properties
|
||||
};
|
||||
if (attr(root, 'id')) feature.id = attr(root, 'id');
|
||||
return [feature];
|
||||
}
|
||||
return gj;
|
||||
},
|
||||
gpx: function(doc) {
|
||||
var i,
|
||||
tracks = get(doc, 'trk'),
|
||||
routes = get(doc, 'rte'),
|
||||
waypoints = get(doc, 'wpt'),
|
||||
// a feature collection
|
||||
gj = fc(),
|
||||
feature;
|
||||
for (i = 0; i < tracks.length; i++) {
|
||||
feature = getTrack(tracks[i]);
|
||||
if (feature) gj.features.push(feature);
|
||||
}
|
||||
for (i = 0; i < routes.length; i++) {
|
||||
feature = getRoute(routes[i]);
|
||||
if (feature) gj.features.push(feature);
|
||||
}
|
||||
for (i = 0; i < waypoints.length; i++) {
|
||||
gj.features.push(getPoint(waypoints[i]));
|
||||
}
|
||||
function getPoints(node, pointname) {
|
||||
var pts = get(node, pointname),
|
||||
line = [],
|
||||
times = [],
|
||||
heartRates = [],
|
||||
l = pts.length;
|
||||
if (l < 2) return {}; // Invalid line in GeoJSON
|
||||
for (var i = 0; i < l; i++) {
|
||||
var c = coordPair(pts[i]);
|
||||
line.push(c.coordinates);
|
||||
if (c.time) times.push(c.time);
|
||||
if (c.heartRate) heartRates.push(c.heartRate);
|
||||
}
|
||||
return {
|
||||
line: line,
|
||||
times: times,
|
||||
heartRates: heartRates
|
||||
};
|
||||
}
|
||||
function getTrack(node) {
|
||||
var segments = get(node, 'trkseg'),
|
||||
track = [],
|
||||
times = [],
|
||||
heartRates = [],
|
||||
line;
|
||||
for (var i = 0; i < segments.length; i++) {
|
||||
line = getPoints(segments[i], 'trkpt');
|
||||
if (line.line) track.push(line.line);
|
||||
if (line.times && line.times.length) times.push(line.times);
|
||||
if (line.heartRates && line.heartRates.length) heartRates.push(line.heartRates);
|
||||
}
|
||||
if (track.length === 0) return;
|
||||
var properties = getProperties(node);
|
||||
if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times;
|
||||
if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates;
|
||||
return {
|
||||
type: 'Feature',
|
||||
properties: properties,
|
||||
geometry: {
|
||||
type: track.length === 1 ? 'LineString' : 'MultiLineString',
|
||||
coordinates: track.length === 1 ? track[0] : track
|
||||
}
|
||||
};
|
||||
}
|
||||
function getRoute(node) {
|
||||
var line = getPoints(node, 'rtept');
|
||||
if (!line.line) return;
|
||||
var routeObj = {
|
||||
type: 'Feature',
|
||||
properties: getProperties(node),
|
||||
geometry: {
|
||||
type: 'LineString',
|
||||
coordinates: line.line
|
||||
}
|
||||
};
|
||||
return routeObj;
|
||||
}
|
||||
function getPoint(node) {
|
||||
var prop = getProperties(node);
|
||||
prop.sym = nodeVal(get1(node, 'sym'));
|
||||
return {
|
||||
type: 'Feature',
|
||||
properties: prop,
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: coordPair(node).coordinates
|
||||
}
|
||||
};
|
||||
}
|
||||
function getProperties(node) {
|
||||
var meta = ['name', 'desc', 'author', 'copyright', 'link',
|
||||
'time', 'keywords'],
|
||||
prop = {},
|
||||
k;
|
||||
for (k = 0; k < meta.length; k++) {
|
||||
prop[meta[k]] = nodeVal(get1(node, meta[k]));
|
||||
}
|
||||
return clean(prop);
|
||||
}
|
||||
return gj;
|
||||
}
|
||||
};
|
||||
return t;
|
||||
})();
|
||||
|
||||
if (typeof module !== 'undefined') module.exports = toGeoJSON;
|
||||
});
|
||||
|
||||
var toGeoJSON = (togeojson && typeof togeojson === 'object' && 'default' in togeojson ? togeojson['default'] : togeojson);
|
||||
|
||||
function Gpx(projection, context, dispatch) {
|
||||
var showLabels = true,
|
||||
layer;
|
||||
@@ -565,10 +938,6 @@
|
||||
};
|
||||
}
|
||||
|
||||
function createCommonjsModule(fn, module) {
|
||||
return module = { exports: {} }, fn(module, module.exports), module.exports;
|
||||
}
|
||||
|
||||
var index$1 = createCommonjsModule(function (module) {
|
||||
'use strict';
|
||||
|
||||
@@ -632,14 +1001,14 @@
|
||||
}
|
||||
});
|
||||
|
||||
var require$$0 = (index$1 && typeof index$1 === 'object' && 'default' in index$1 ? index$1['default'] : index$1);
|
||||
var require$$0$1 = (index$1 && typeof index$1 === 'object' && 'default' in index$1 ? index$1['default'] : index$1);
|
||||
|
||||
var index = createCommonjsModule(function (module) {
|
||||
'use strict';
|
||||
|
||||
module.exports = rbush;
|
||||
|
||||
var quickselect = require$$0;
|
||||
var quickselect = require$$0$1;
|
||||
|
||||
function rbush(maxEntries, format) {
|
||||
if (!(this instanceof rbush)) return new rbush(maxEntries, format);
|
||||
|
||||
-1127
File diff suppressed because it is too large
Load Diff
-3030
File diff suppressed because it is too large
Load Diff
@@ -1,223 +0,0 @@
|
||||
toGeoJSON = (function() {
|
||||
'use strict';
|
||||
|
||||
var removeSpace = (/\s*/g),
|
||||
trimSpace = (/^\s*|\s*$/g),
|
||||
splitSpace = (/\s+/);
|
||||
// generate a short, numeric hash of a string
|
||||
function okhash(x) {
|
||||
if (!x || !x.length) return 0;
|
||||
for (var i = 0, h = 0; i < x.length; i++) {
|
||||
h = ((h << 5) - h) + x.charCodeAt(i) | 0;
|
||||
} return h;
|
||||
}
|
||||
// all Y children of X
|
||||
function get(x, y) { return x.getElementsByTagName(y); }
|
||||
function attr(x, y) { return x.getAttribute(y); }
|
||||
function attrf(x, y) { return parseFloat(attr(x, y)); }
|
||||
// one Y child of X, if any, otherwise null
|
||||
function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
|
||||
function norm(el) { if (el.normalize) { el.normalize(); } return el; }
|
||||
// cast array x into numbers
|
||||
function numarray(x) {
|
||||
for (var j = 0, o = []; j < x.length; j++) o[j] = parseFloat(x[j]);
|
||||
return o;
|
||||
}
|
||||
function clean(x) {
|
||||
var o = {};
|
||||
for (var i in x) if (x[i]) o[i] = x[i];
|
||||
return o;
|
||||
}
|
||||
// get the content of a text node, if any
|
||||
function nodeVal(x) { if (x) {norm(x);} return x && x.firstChild && x.firstChild.nodeValue; }
|
||||
// get one coordinate from a coordinate array, if any
|
||||
function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }
|
||||
// get all coordinates from a coordinate array as [[],[]]
|
||||
function coord(v) {
|
||||
var coords = v.replace(trimSpace, '').split(splitSpace),
|
||||
o = [];
|
||||
for (var i = 0; i < coords.length; i++) {
|
||||
o.push(coord1(coords[i]));
|
||||
}
|
||||
return o;
|
||||
}
|
||||
function coordPair(x) { return [attrf(x, 'lon'), attrf(x, 'lat')]; }
|
||||
|
||||
// create a new feature collection parent object
|
||||
function fc() {
|
||||
return {
|
||||
type: 'FeatureCollection',
|
||||
features: []
|
||||
};
|
||||
}
|
||||
|
||||
var styleSupport = false;
|
||||
if (typeof XMLSerializer !== 'undefined') {
|
||||
var serializer = new XMLSerializer();
|
||||
styleSupport = true;
|
||||
}
|
||||
function xml2str(str) { return serializer.serializeToString(str); }
|
||||
|
||||
var t = {
|
||||
kml: function(doc, o) {
|
||||
o = o || {};
|
||||
|
||||
var gj = fc(),
|
||||
// styleindex keeps track of hashed styles in order to match features
|
||||
styleIndex = {},
|
||||
// atomic geospatial types supported by KML - MultiGeometry is
|
||||
// handled separately
|
||||
geotypes = ['Polygon', 'LineString', 'Point', 'Track'],
|
||||
// all root placemarks in the file
|
||||
placemarks = get(doc, 'Placemark'),
|
||||
styles = get(doc, 'Style');
|
||||
|
||||
if (styleSupport) for (var k = 0; k < styles.length; k++) {
|
||||
styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16);
|
||||
}
|
||||
for (var j = 0; j < placemarks.length; j++) {
|
||||
gj.features = gj.features.concat(getPlacemark(placemarks[j]));
|
||||
}
|
||||
function gxCoord(v) { return numarray(v.split(' ')); }
|
||||
function gxCoords(root) {
|
||||
var elems = get(root, 'coord', 'gx'), coords = [];
|
||||
for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));
|
||||
return coords;
|
||||
}
|
||||
function getGeometry(root) {
|
||||
var geomNode, geomNodes, i, j, k, geoms = [];
|
||||
if (get1(root, 'MultiGeometry')) return getGeometry(get1(root, 'MultiGeometry'));
|
||||
if (get1(root, 'MultiTrack')) return getGeometry(get1(root, 'MultiTrack'));
|
||||
for (i = 0; i < geotypes.length; i++) {
|
||||
geomNodes = get(root, geotypes[i]);
|
||||
if (geomNodes) {
|
||||
for (j = 0; j < geomNodes.length; j++) {
|
||||
geomNode = geomNodes[j];
|
||||
if (geotypes[i] == 'Point') {
|
||||
geoms.push({
|
||||
type: 'Point',
|
||||
coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))
|
||||
});
|
||||
} else if (geotypes[i] == 'LineString') {
|
||||
geoms.push({
|
||||
type: 'LineString',
|
||||
coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))
|
||||
});
|
||||
} else if (geotypes[i] == 'Polygon') {
|
||||
var rings = get(geomNode, 'LinearRing'),
|
||||
coords = [];
|
||||
for (k = 0; k < rings.length; k++) {
|
||||
coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));
|
||||
}
|
||||
geoms.push({
|
||||
type: 'Polygon',
|
||||
coordinates: coords
|
||||
});
|
||||
} else if (geotypes[i] == 'Track') {
|
||||
geoms.push({
|
||||
type: 'LineString',
|
||||
coordinates: gxCoords(geomNode)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return geoms;
|
||||
}
|
||||
function getPlacemark(root) {
|
||||
var geoms = getGeometry(root), i, properties = {},
|
||||
name = nodeVal(get1(root, 'name')),
|
||||
styleUrl = nodeVal(get1(root, 'styleUrl')),
|
||||
description = nodeVal(get1(root, 'description')),
|
||||
extendedData = get1(root, 'ExtendedData');
|
||||
|
||||
if (!geoms.length) return [];
|
||||
if (name) properties.name = name;
|
||||
if (styleUrl && styleIndex[styleUrl]) {
|
||||
properties.styleUrl = styleUrl;
|
||||
properties.styleHash = styleIndex[styleUrl];
|
||||
}
|
||||
if (description) properties.description = description;
|
||||
if (extendedData) {
|
||||
var datas = get(extendedData, 'Data'),
|
||||
simpleDatas = get(extendedData, 'SimpleData');
|
||||
|
||||
for (i = 0; i < datas.length; i++) {
|
||||
properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
|
||||
}
|
||||
for (i = 0; i < simpleDatas.length; i++) {
|
||||
properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
|
||||
}
|
||||
}
|
||||
return [{
|
||||
type: 'Feature',
|
||||
geometry: (geoms.length === 1) ? geoms[0] : {
|
||||
type: 'GeometryCollection',
|
||||
geometries: geoms
|
||||
},
|
||||
properties: properties
|
||||
}];
|
||||
}
|
||||
return gj;
|
||||
},
|
||||
gpx: function(doc, o) {
|
||||
var i,
|
||||
tracks = get(doc, 'trk'),
|
||||
routes = get(doc, 'rte'),
|
||||
waypoints = get(doc, 'wpt'),
|
||||
// a feature collection
|
||||
gj = fc();
|
||||
for (i = 0; i < tracks.length; i++) {
|
||||
gj.features.push(getLinestring(tracks[i], 'trkpt'));
|
||||
}
|
||||
for (i = 0; i < routes.length; i++) {
|
||||
gj.features.push(getLinestring(routes[i], 'rtept'));
|
||||
}
|
||||
for (i = 0; i < waypoints.length; i++) {
|
||||
gj.features.push(getPoint(waypoints[i]));
|
||||
}
|
||||
function getLinestring(node, pointname) {
|
||||
var j, pts = get(node, pointname), line = [];
|
||||
for (j = 0; j < pts.length; j++) {
|
||||
line.push(coordPair(pts[j]));
|
||||
}
|
||||
return {
|
||||
type: 'Feature',
|
||||
properties: getProperties(node),
|
||||
geometry: {
|
||||
type: 'LineString',
|
||||
coordinates: line
|
||||
}
|
||||
};
|
||||
}
|
||||
function getPoint(node) {
|
||||
var prop = getProperties(node);
|
||||
prop.ele = nodeVal(get1(node, 'ele'));
|
||||
prop.sym = nodeVal(get1(node, 'sym'));
|
||||
return {
|
||||
type: 'Feature',
|
||||
properties: prop,
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: coordPair(node)
|
||||
}
|
||||
};
|
||||
}
|
||||
function getProperties(node) {
|
||||
var meta = ['name', 'desc', 'author', 'copyright', 'link',
|
||||
'time', 'keywords'],
|
||||
prop = {},
|
||||
k;
|
||||
for (k = 0; k < meta.length; k++) {
|
||||
prop[meta[k]] = nodeVal(get1(node, meta[k]));
|
||||
}
|
||||
return clean(prop);
|
||||
}
|
||||
return gj;
|
||||
}
|
||||
};
|
||||
return t;
|
||||
})();
|
||||
|
||||
if (typeof module !== 'undefined') module.exports = toGeoJSON;
|
||||
@@ -3,6 +3,7 @@ import { Way } from './way';
|
||||
import { Relation } from './relation';
|
||||
import { Node } from './node';
|
||||
import { Extent } from '../geo/index';
|
||||
import osmAuth from 'osm-auth';
|
||||
|
||||
export function Connection(useHttps) {
|
||||
if (typeof useHttps !== 'boolean') {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import toGeoJSON from 'togeojson';
|
||||
|
||||
export function Gpx(projection, context, dispatch) {
|
||||
var showLabels = true,
|
||||
layer;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Icon } from '../svg/index';
|
||||
import { intro } from './intro';
|
||||
import { tooltipHtml } from './tooltipHtml';
|
||||
import marked from 'marked';
|
||||
|
||||
export function Help(context) {
|
||||
var key = 'H';
|
||||
|
||||
+4
-1
@@ -22,8 +22,11 @@
|
||||
],
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"marked": "0.3.5",
|
||||
"osm-auth": "0.2.8",
|
||||
"rbush": "2.0.1",
|
||||
"sexagesimal": "0.5.0"
|
||||
"sexagesimal": "0.5.0",
|
||||
"togeojson": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"chai": "3.5.0",
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ import commonjs from 'rollup-plugin-commonjs';
|
||||
|
||||
export default {
|
||||
plugins: [
|
||||
nodeResolve({ jsnext: true, main: true }),
|
||||
nodeResolve({ jsnext: true, main: true, browser: true }),
|
||||
commonjs()
|
||||
]
|
||||
};
|
||||
|
||||
@@ -36,8 +36,6 @@
|
||||
<script src='../js/lib/d3-compat.js'></script>
|
||||
<script src='../js/lib/bootstrap-tooltip.js'></script>
|
||||
<script src='../js/lib/diff3.js'></script>
|
||||
<script src='../js/lib/togeojson.js'></script>
|
||||
<script src='../js/lib/osmauth.js'></script>
|
||||
|
||||
<script src='../js/id/id.js'></script>
|
||||
<script src='../js/lib/id/index.js'></script>
|
||||
|
||||
Reference in New Issue
Block a user