editor.get_features() and various improvements
This commit is contained in:
parent
c2e2988ce1
commit
49c2270b84
2 changed files with 55 additions and 17 deletions
|
@ -81,3 +81,6 @@
|
||||||
.start-drawing {
|
.start-drawing {
|
||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
|
.leaflet-editable-drawing .leaflet-overlay-pane .leaflet-interactive {
|
||||||
|
cursor:crosshair;
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
editor = {
|
editor = {
|
||||||
feature_types: {},
|
feature_types: {},
|
||||||
|
feature_types_order: [],
|
||||||
|
|
||||||
init: function () {
|
init: function () {
|
||||||
// Init Map
|
// Init Map
|
||||||
|
@ -17,7 +18,6 @@ editor = {
|
||||||
editor.get_feature_types();
|
editor.get_feature_types();
|
||||||
editor.get_packages();
|
editor.get_packages();
|
||||||
editor.get_sources();
|
editor.get_sources();
|
||||||
editor.get_levels();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
get_feature_types: function () {
|
get_feature_types: function () {
|
||||||
|
@ -27,6 +27,7 @@ editor = {
|
||||||
for (var i = 0; i < feature_types.length; i++) {
|
for (var i = 0; i < feature_types.length; i++) {
|
||||||
feature_type = feature_types[i];
|
feature_type = feature_types[i];
|
||||||
editor.feature_types[feature_type.name] = feature_type;
|
editor.feature_types[feature_type.name] = feature_type;
|
||||||
|
editor.feature_types_order.push(feature_type.name);
|
||||||
editcontrols.append(
|
editcontrols.append(
|
||||||
$('<fieldset>').attr('name', feature_type.name).append(
|
$('<fieldset>').attr('name', feature_type.name).append(
|
||||||
$('<legend>').text(feature_type.title_plural).append(
|
$('<legend>').text(feature_type.title_plural).append(
|
||||||
|
@ -35,6 +36,7 @@ editor = {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
editor.get_levels();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -70,9 +72,9 @@ editor = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
level_layers: {},
|
|
||||||
levels: {},
|
levels: {},
|
||||||
_level: null,
|
_level: null,
|
||||||
|
level_feature_layers: {},
|
||||||
get_levels: function () {
|
get_levels: function () {
|
||||||
$.getJSON('/api/v1/levels/?ordering=-altitude', function (levels) {
|
$.getJSON('/api/v1/levels/?ordering=-altitude', function (levels) {
|
||||||
L.LevelControl = L.Control.extend({
|
L.LevelControl = L.Control.extend({
|
||||||
|
@ -103,28 +105,32 @@ editor = {
|
||||||
for (var i = 0; i < levels.length; i++) {
|
for (var i = 0; i < levels.length; i++) {
|
||||||
level = levels[i];
|
level = levels[i];
|
||||||
editor.levels[level.name] = level;
|
editor.levels[level.name] = level;
|
||||||
editor.level_layers[level.name] = L.layerGroup();
|
editor.level_feature_layers[level.name] = {};
|
||||||
|
for (var j = 0; j < editor.feature_types_order.length; j++) {
|
||||||
|
editor.level_feature_layers[level.name][editor.feature_types_order[j]] = L.layerGroup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
editor.set_current_level(levels[levels.length - 1].name);
|
||||||
editor.init_drawing();
|
editor.init_drawing();
|
||||||
|
|
||||||
editor._level = levels[levels.length - 1].name;
|
|
||||||
editor.level_layers[editor._level].addTo(editor.map);
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
set_current_level: function(name) {
|
set_current_level: function(level_name) {
|
||||||
if (editor._creating !== null || editor._editing !== null) return;
|
if (editor._creating !== null || editor._editing !== null) return;
|
||||||
editor.level_layers[editor._level].remove();
|
for (var i = 0; i < editor.feature_types_order.length; i++) {
|
||||||
editor._level = name;
|
if (editor._level !== null) {
|
||||||
editor.level_layers[editor._level].addTo(editor.map);
|
editor.level_feature_layers[editor._level][editor.feature_types_order[i]].remove();
|
||||||
|
}
|
||||||
|
editor.level_feature_layers[level_name][editor.feature_types_order[i]].addTo(editor.map);
|
||||||
|
}
|
||||||
|
editor._level = level_name;
|
||||||
$('.leaflet-levels .current').removeClass('current');
|
$('.leaflet-levels .current').removeClass('current');
|
||||||
$('.leaflet-levels a[name='+name+']').addClass('current');
|
$('.leaflet-levels a[name='+level_name+']').addClass('current');
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_creating: null,
|
||||||
|
_editing: null,
|
||||||
init_drawing: function () {
|
init_drawing: function () {
|
||||||
// Add drawing new features
|
// Add drawing new features
|
||||||
editor._creating = null;
|
|
||||||
editor._editing = null;
|
|
||||||
|
|
||||||
L.DrawControl = L.Control.extend({
|
L.DrawControl = L.Control.extend({
|
||||||
options: {
|
options: {
|
||||||
position: 'topleft'
|
position: 'topleft'
|
||||||
|
@ -159,8 +165,32 @@ editor = {
|
||||||
},
|
},
|
||||||
|
|
||||||
get_features: function () {
|
get_features: function () {
|
||||||
$('.start-drawing').show();
|
$.getJSON('/api/v1/features/', function(features) {
|
||||||
$('#mapeditcontrols').addClass('list');
|
for (level in editor.level_layers) {
|
||||||
|
editor.level_layers[level].clearLayers();
|
||||||
|
}
|
||||||
|
var feature;
|
||||||
|
for (var i=0; i < features.length; i++) {
|
||||||
|
feature = features[i];
|
||||||
|
L.geoJSON({
|
||||||
|
type: 'Feature',
|
||||||
|
geometry: feature.geometry,
|
||||||
|
properties: {
|
||||||
|
name: feature.name,
|
||||||
|
feature_type: feature.feature_type
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
style: editor._get_feature_style
|
||||||
|
}).addTo(editor.level_feature_layers[feature.level][feature.feature_type]);
|
||||||
|
}
|
||||||
|
$('.start-drawing').show();
|
||||||
|
$('#mapeditcontrols').addClass('list');
|
||||||
|
editor.set_current_level(editor._level);
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
_get_feature_style: function (feature) {
|
||||||
|
return editor.feature_types[feature.properties.feature_type];
|
||||||
},
|
},
|
||||||
|
|
||||||
start_creating: function (feature_type) {
|
start_creating: function (feature_type) {
|
||||||
|
@ -223,7 +253,9 @@ editor = {
|
||||||
},
|
},
|
||||||
cancel_editing: function() {
|
cancel_editing: function() {
|
||||||
if (editor._editing !== null) {
|
if (editor._editing !== null) {
|
||||||
editor._editing.remove();
|
if (editor._creating !== null) {
|
||||||
|
editor._editing.remove();
|
||||||
|
}
|
||||||
editor._editing = null;
|
editor._editing = null;
|
||||||
editor._creating = null;
|
editor._creating = null;
|
||||||
$('#mapeditcontrols').removeClass('detail');
|
$('#mapeditcontrols').removeClass('detail');
|
||||||
|
@ -245,6 +277,9 @@ editor = {
|
||||||
$('#mapeditcontrols').addClass('detail');
|
$('#mapeditcontrols').addClass('detail');
|
||||||
editor._editing.enableEdit();
|
editor._editing.enableEdit();
|
||||||
} else {
|
} else {
|
||||||
|
if (editor._creating !== null) {
|
||||||
|
editor._editing.remove();
|
||||||
|
}
|
||||||
editor._editing = null;
|
editor._editing = null;
|
||||||
editor._creating = null;
|
editor._creating = null;
|
||||||
editor.get_features();
|
editor.get_features();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue