diff options
-rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 166 |
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; |