summaryrefslogtreecommitdiff
path: root/chimere/static
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-04-06 16:20:42 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-04-06 16:20:42 +0200
commit2dc3990379beea996d88737122e9eeaa00bf212f (patch)
tree1d0d858a58de09118ac461f88a91a9ddd866ba29 /chimere/static
parent9642d96c9328b61a206a7a5d4df7bbc54de38946 (diff)
downloadChimère-2dc3990379beea996d88737122e9eeaa00bf212f.tar.bz2
Chimère-2dc3990379beea996d88737122e9eeaa00bf212f.zip
Manage point edition
Diffstat (limited to 'chimere/static')
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js96
1 files changed, 49 insertions, 47 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 565598f..79a9e37 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -339,7 +339,7 @@ function transform(obj) {
// popup management
settings.popup_item = document.getElementById('popup');
settings.popup = new ol.Overlay({
- element: popup,
+ element: settings.popup,
positioning: ol.OverlayPositioning.BOTTOM_LEFT,
stopEvent: false
});
@@ -407,8 +407,8 @@ function transform(obj) {
source: settings.sourceVectors
});
settings.map.addLayer(settings.layerVectors);
- if (settings.edition && (settings.edition_type == 'polygon'
- || settings.edition_type == 'route')){
+ if (settings.edition){ //&& (settings.edition_type == 'polygon'
+ // || settings.edition_type == 'route')){
settings.features = new ol.Collection();
@@ -448,7 +448,7 @@ function transform(obj) {
settings.map.addLayer(settings.editionVector);
- var edition_type;
+ var edition_type = 'Point';
if (settings.edition_type == 'route') edition_type = 'LineString';
if (settings.edition_type == 'polygon') edition_type = 'Polygon';
@@ -710,10 +710,10 @@ function transform(obj) {
activateContextMenu: function(){
settings.edition_type_is_route = false;
- settings.map.events.unregister('click', settings.map,
- methods.setMarker);
- settings.map.events.register('click', settings.map,
- methods.displayMapMenu);
+ // settings.map.events.unregister('click', settings.map,
+ // methods.setMarker);
+ // settings.map.events.register('click', settings.map,
+ // methods.displayMapMenu);
},
activatePolygonEdit: function(){
@@ -725,8 +725,8 @@ function transform(obj) {
return;
settings.edition_type_is_route = true;
methods.cleanMarker();
- settings.map.events.unregister('click', settings.map,
- methods.setMarker);
+ // settings.map.events.unregister('click', settings.map,
+ // methods.setMarker);
if (settings.routing){
settings.map.events.register('click', settings.map,
methods.displayMapMenu);
@@ -746,10 +746,10 @@ function transform(obj) {
if (settings.current_popup != null) {
settings.current_popup.hide();
}
- settings.map.events.unregister('click', settings.map,
- methods.displayMapMenu);
- settings.map.events.register('click', settings.map,
- methods.setMarker);
+ // settings.map.events.unregister('click', settings.map,
+ // methods.displayMapMenu);
+ //settings.map.events.register('click', settings.map,
+ // methods.setMarker);
},
// change map_layer
changeMapLayer: function(map_idx){
@@ -1093,6 +1093,10 @@ function transform(obj) {
settings.draw_activated = true;
settings.modify_activated = true;
},
+ activateModify: function (){
+ settings.map.addInteraction(settings.modify);
+ settings.modify_activated = true;
+ },
deactivateDraw: function (){
if (settings.draw_activated){
settings.map.removeInteraction(settings.draw);
@@ -1846,12 +1850,6 @@ function transform(obj) {
settings.layerDbFeatures.getDataExtent());
},
// methods for edition
- setMarker: function (event){
- event = event || window.event;
- var lonlat = settings.map.getLonLatFromViewPortPx(event.xy);
- methods.putEditMarker(lonlat, false);
- OpenLayers.Event.stop(event);
- },
cleanMarker: function(){
if (settings.current_edit_feature) {
settings.layerDbFeatures.removeMarker(settings.current_edit_feature);
@@ -1859,40 +1857,34 @@ function transform(obj) {
},
/* put the marker on the map and update latitude and longitude fields */
putEditMarker: function (lonlat, zoom){
- methods.cleanMarker();
- settings.current_edit_feature = new OpenLayers.Marker(lonlat.clone(),
- settings.default_icon);
- settings.layerDbFeatures.addMarker(settings.current_edit_feature);
- methods.updateMarkerInput();
+ if (settings.features.getLength()) settings.features.pop();
+ console.log(lonlat);
+ var point = new ol.geom.Point(lonlat);
+ point.transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION);
+ var feature = new ol.Feature({
+ geometry: point
+ });
+
+ settings.features.push(feature);
+ methods.updateGenInput();
/* zoom to the point */
if (zoom){
- var bounds = settings.layerDbFeatures.getDataExtent();
- if (bounds) settings.map.zoomToExtent(bounds);
+ var view = settings.map.getView();
+ view.fit(settings.editionSource.getExtent(), settings.map.getSize());
+ view.setZoom(view.getZoom() - 11);
}
return;
},
- updateMarkerInput: function(){
- 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);
- }
-
- },
updateInput: function(){
if (settings.edition_type == 'linestring'){
methods.updateRoutingInput();
}
if (settings.edition_type == 'polygon'){
- methods.updatePolygonInput();
+ methods.updateGenInput('polygon');
}
+ if (settings.edition_type == 'marker'){
+ methods.updateGenInput('marker');
+ };
},
updateRoutingInput: function(){
if (!settings.current_routes_features) {
@@ -1915,16 +1907,26 @@ function transform(obj) {
var linestring = new OpenLayers.Geometry.LineString(point_array);
jQuery('#id_route').val(String(linestring));
},
- updatePolygonInput: function(){
+ updateGenInput: function(){
var features = settings.editionSource.getFeatures();
+ var input_id = '#';
+ if (settings.edition_type == 'marker') input_id += settings.input_id;
+ if (settings.edition_type == 'polygon') input_id += 'id_polygon';
+
if (!features.length) {
- jQuery('#id_polygon').val('');
+ jQuery(input_id).val('');
return;
}
var wkt = settings.WKT.writeFeature(features[0], {
dataProjection: EPSG_DISPLAY_PROJECTION,
- featureProjectsion: EPSG_PROJECTION});
- jQuery('#id_polygon').val(String(wkt));
+ featureProjection: EPSG_PROJECTION});
+ jQuery(input_id).val(String(wkt));
+ if(settings.edition_type == 'marker' && $('#live_latitude').length){
+ coords = features[0].getGeometry().clone().transform(
+ EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION).getCoordinates();
+ $('#live_latitude').val(coords[1]);
+ $('#live_longitude').val(coords[0]);
+ }
},
activateCurrentControl: function(){
if (settings.current_control){