summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-10-17 18:19:04 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-10-17 18:28:30 +0200
commit0e62832cbb7f6bb9f00532540b9da08fbafe436a (patch)
tree8f2cf481769729fe759245ecbfc27bcf1dafd0ed
parentcb5c6fffca8b4663c483d96d7569d28471bf00da (diff)
downloadChimère-0e62832cbb7f6bb9f00532540b9da08fbafe436a.tar.bz2
Chimère-0e62832cbb7f6bb9f00532540b9da08fbafe436a.zip
JS: simplify edit activation
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js166
1 files changed, 96 insertions, 70 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 1f9a347..3d262f9 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -432,12 +432,14 @@ function transformCoordToLonLat(coord) {
}
]);
- var contextmenu = new ContextMenu({
- width: 170,
- default_items: false,
- items: contextmenu_items
- });
- settings.map.addControl(contextmenu);
+ if (typeof ContextMenu != 'undefined'){
+ var contextmenu = new ContextMenu({
+ width: 170,
+ default_items: false,
+ items: contextmenu_items
+ });
+ settings.map.addControl(contextmenu);
+ }
/* Manage permalink */
/* OL3-deprecated permalink
@@ -643,71 +645,8 @@ function transformCoordToLonLat(coord) {
source: settings.sourceVectors
});
settings.map.addLayer(settings.layerVectors);
- if (settings.edition){ //&& (settings.edition_type == 'polygon'
- // || settings.edition_type == 'route')){
-
- settings.features = new ol.Collection();
-
- settings.editionSource = new ol.source.Vector(
- {features: settings.features});
-
- settings.editionSource.on(
- 'changefeature',
- function(changed) {
- if (changed) methods.updateInput();
- });
-
- settings.editionSource.on(
- 'addfeature',
- function(changed) {
- if (changed) methods.updateInput();
- });
-
- settings.editionVector = new ol.layer.Vector({
- source: settings.editionSource,
- style: new ol.style.Style({
- fill: new ol.style.Fill({
- color: 'rgba(180, 180, 180, 0.3)'
- }),
- stroke: new ol.style.Stroke({
- color: '#ffcc33',
- width: 2
- }),
- image: new ol.style.Circle({
- radius: 7,
- fill: new ol.style.Fill({
- color: '#ffcc33'
- })
- })
- })
- });
-
- settings.map.addLayer(settings.editionVector);
-
- var edition_type = 'Point';
- if (settings.edition_type == 'route') edition_type = 'LineString';
- if (settings.edition_type == 'polygon') edition_type = 'Polygon';
+ if (settings.edition) methods.activateEdition();
- settings.draw = new ol.interaction.Draw({
- source: settings.editionSource,
- type: (edition_type),
- });
- settings.draw_activated = false;
-
- settings.draw.on("drawend", function() {
- settings.map.removeInteraction(settings.draw);
- settings.draw_activated = false;
- });
-
- settings.modify = new ol.interaction.Modify({
- features: settings.features,
- deleteCondition: function(event) {
- return ol.events.condition.shiftKeyOnly(event) &&
- ol.events.condition.singleClick(event);
- }
- });
- settings.modify_activated = false;
- }
// OL3-deprecated settings.layerVectors.setOpacity(0.8);
/* OL3-deprecated-routing
if (settings.edition_type_is_route){
@@ -936,6 +875,76 @@ function transformCoordToLonLat(coord) {
settings.map.on('moveend', reload_on_move);
reload_on_move();
},
+ activateEdition: function(new_edition_type){
+ settings.edition = true;
+ if (new_edition_type) settings.edition_type = new_edition_type;
+
+ if (typeof settings.features == 'undefined'){
+ settings.features = new ol.Collection();
+
+ settings.editionSource = new ol.source.Vector(
+ {features: settings.features});
+
+ settings.editionSource.on(
+ 'changefeature',
+ function(changed) {
+ if (changed) methods.updateInput();
+ });
+
+ settings.editionSource.on(
+ 'addfeature',
+ function(changed) {
+ if (changed) methods.updateInput();
+ });
+
+ settings.editionVector = new ol.layer.Vector({
+ source: settings.editionSource,
+ style: new ol.style.Style({
+ fill: new ol.style.Fill({
+ color: 'rgba(180, 180, 180, 0.3)'
+ }),
+ stroke: new ol.style.Stroke({
+ color: '#b165cd',
+ width: 4
+ }),
+ image: new ol.style.Circle({
+ radius: 8,
+ fill: new ol.style.Fill({
+ color: '#b165cd'
+ })
+ })
+ })
+ });
+ settings.map.addLayer(settings.editionVector);
+ } else {
+ settings.map.removeInteraction(settings.draw);
+ settings.map.removeInteraction(settings.modify);
+ settings.editionSource.clear();
+ }
+ var edition_type = 'Point';
+ if (settings.edition_type == 'route') edition_type = 'LineString';
+ if (settings.edition_type == 'polygon') edition_type = 'Polygon';
+
+ settings.draw = new ol.interaction.Draw({
+ source: settings.editionSource,
+ type: (edition_type),
+ });
+ settings.draw_activated = false;
+
+ settings.draw.on("drawend", function() {
+ settings.map.removeInteraction(settings.draw);
+ settings.draw_activated = false;
+ });
+
+ settings.modify = new ol.interaction.Modify({
+ features: settings.features,
+ deleteCondition: function(event) {
+ return ol.events.condition.shiftKeyOnly(event) &&
+ ol.events.condition.singleClick(event);
+ }
+ });
+ settings.modify_activated = false;
+ },
enableClustering: function(){
// Style clusters and hide items inside clusters
settings._styleCache = {};
@@ -2768,6 +2777,23 @@ function transformCoordToLonLat(coord) {
methods.updateGenInput('marker');
};
},
+ updateMarkerInput: function(){
+ // ol3 TODO
+ if (!settings.current_edit_feature) {
+ return;
+ }
+ lonlat = settings.current_edit_feature.lonlat.clone().transform(
+ settings.map.getProjectionObject(),
+ EPSG_DISPLAY_PROJECTION);
+ $('#'+settings.input_id).val(
+ 'POINT(' + lonlat.lon + ' ' + lonlat.lat + ')');
+ if($('#live_latitude').length){
+ $('#live_latitude').val(lonlat.lat);
+ $('#live_longitude').val(lonlat.lon);
+ }
+
+ },
+
updateRoutingInput: function(){
if (!settings.current_routes_features) {
return;