summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chimere/static/chimere/js/base.js3
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js193
-rw-r--r--chimere/templates/chimere/blocks/map.html2
-rw-r--r--chimere/templates/chimere/blocks/share_bar.html1
4 files changed, 112 insertions, 87 deletions
diff --git a/chimere/static/chimere/js/base.js b/chimere/static/chimere/js/base.js
index 0085cd7..facaf23 100644
--- a/chimere/static/chimere/js/base.js
+++ b/chimere/static/chimere/js/base.js
@@ -125,7 +125,8 @@ function share_link_update(){
share_id = share_id.split('_')[0];
}
}
- var params = $('#permalink').attr('href').split('/');
+ $('#main-map').chimere('update_permalink');
+ var params = $('#permalink').attr('href').split('#');
url += share_id + params[params.length-1];
$.ajax({url: url,
dataType: "html",
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index b42ec33..a2d2d5e 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -627,20 +627,16 @@ function transformCoordToLonLat(coord) {
settings.view.setZoom(DEFAULT_ZOOM);
}
}
- /// OL3-TODO
+ var post_load_helper;
if (!settings.edition){
- if (settings.enable_clustering){
- /// OL3-TODO cluster
- // settings.map.events.register('zoomend', null,
- // methods.cleanCluster);
- }
- methods.loadCategories();
- methods.loadGeoObjects();
- /// OL3-TODO
- // methods.activateContextMenu()
+ methods.loadCategories(function(){
+ if (settings.permalink) {
+ post_load_helper = methods._param_map_from_permalink();
+ }
+ methods.loadGeoObjects(post_load_helper);
+ });
} else {
- /// OL3-TODO
if (settings.edition_type == 'route'){
methods.activateRouteEdit();
} else if (settings.edition_type == 'polygon'){
@@ -663,10 +659,10 @@ function transformCoordToLonLat(coord) {
settings._map_loaded = true;
if (settings._load_geoobjects_requested){
- methods.loadGeoObjects();
+ methods.loadGeoObjects(post_load_helper);
}
});
- if (settings.permalink) methods._param_map_from_permalink();
+ $("#permalink").click(methods.update_permalink);
return;
@@ -744,9 +740,8 @@ function transformCoordToLonLat(coord) {
},
_move_end: function(e){
settings._reload_on_move(e);
- methods._get_permalink();
},
- _get_permalink: function(e){
+ update_permalink: function(e){
var view = settings.map.getView();
var center = ol.proj.transform(
view.getCenter(),
@@ -755,7 +750,9 @@ function transformCoordToLonLat(coord) {
var layers = '';
$.each(settings.map.getLayers().getArray(), function(i, l){
var idx = l.getProperties()['base-layer-idx'];
- if (typeof idx != 'undefined' && l.getVisible()){
+ if (typeof idx != 'undefined' && String(idx) != '0' &&
+ l.getVisible()){
+ alert(idx);
if (layers != '') layers += ':';
layers += idx;
}
@@ -816,83 +813,100 @@ function transformCoordToLonLat(coord) {
_param_map_from_permalink: function(){
var items = settings.permalink.split(';');
- var zoom = items[0];
+ var view = settings.map.getView();
+ /* zoom & center */
+ var zoom = items[0];
var center = items[1].split(':');
center = [Math.round(center[0] * 1000) / 1000,
Math.round(center[1] * 1000) / 1000];
- var center = ol.proj.transform(
+ center = ol.proj.transform(
center,
EPSG_DISPLAY_PROJECTION,
EPSG_PROJECTION);
- var layers = items[2];
- var checked_categories = items[3].split('-');
- var current_feature = items[4];
- var routing_speed = items[5];
- var routing_transport = items[6];
- var routing_start = items[7];
- var routing_end = items[8];
- var steps = items[9];
-
- var view = settings.map.getView();
- methods._set_animation();
+ //methods._set_animation();
view.setZoom(zoom);
view.setCenter(center);
- /*
- var center = ol.proj.transform(
- view.getCenter(),
- EPSG_PROJECTION,
- EPSG_DISPLAY_PROJECTION);
- var layers = '';
+
+ /* layers */
+ var layers = items[2].split(':');
$.each(settings.map.getLayers().getArray(), function(i, l){
var idx = l.getProperties()['base-layer-idx'];
- if (typeof idx != 'undefined' && l.getVisible()){
- if (layers != '') layers += ':';
- layers += idx;
+ if (typeof idx != 'undefined' && String(idx) != '0'){
+ if (layers.indexOf(String(idx)) != -1){
+ if (!l.getVisible()) l.setVisible(true);
+ } else {
+ if (l.getVisible()) l.setVisible(false);
+ }
}
});
- var current_feature = '';
- if (settings.current_feature)
- current_feature = settings.current_feature.getId();
- var routing_speed = '';
- if (settings.routing_speed)
- routing_speed = settings.routing_speed;
- var routing_transport = '';
- if (settings.routing_transport)
- routing_transport = settings.routing_transport;
- var routing_start = '';
- if (settings.routing_start){
+ /* categories */
+ var checked_categories = items[3].split('-');
+ $('#frm_categories .subcategories input:checkbox').each(
+ function(index){
+ var cat_id = $(this).attr('id').split('_').pop();
+ if (checked_categories.indexOf(cat_id) != -1){
+ $(this).click();
+ } else {
+ $(this).attr('checked', '');
+ }
+ });
+
+ var routing_speed = items[5];
+ if (routing_speed)
+ settings.routing_speed = routing_speed;
+ var routing_transport = items[6];
+ if (routing_transport)
+ settings.routing_transport = routing_transport;
+
+ var steps = items[9];
+ if (steps){
+ for (var step_i = 9 ; step_i < items.length ; step_i++){
+ var coords = items[step_i].split(':');
+ coords = [Math.round(coords[0] * 1000) / 1000,
+ Math.round(coords[1] * 1000) / 1000];
+ var geom = ol.proj.transform(coords,
+ EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION);
+ methods.routingAddStep(geom);
+ }
+ }
+
+ var routing_start = items[7];
+ if (routing_start){
+ var coords = routing_start.split(':');
var geom = ol.proj.transform(
- settings.routing_start.getGeometry().getCoordinates(),
- EPSG_PROJECTION,
- EPSG_DISPLAY_PROJECTION);
- routing_start = geom[0].toFixed(5) + ':' + geom[1].toFixed(5);
+ [Math.round(coords[0] * 1000) / 1000,
+ Math.round(coords[1] * 1000) / 1000],
+ EPSG_DISPLAY_PROJECTION,
+ EPSG_PROJECTION);
+ methods.routingFrom(geom);
}
- var routing_end = '';
- if (settings.routing_end){
+
+ var routing_end = items[8];
+ if (routing_end){
+ var coords = routing_end.split(':');
var geom = ol.proj.transform(
- settings.routing_end.getGeometry().getCoordinates(),
- EPSG_PROJECTION,
- EPSG_DISPLAY_PROJECTION);
- routing_end = geom[0].toFixed(5) + ':' + geom[1].toFixed(5);
+ [Math.round(coords[0] * 1000) / 1000,
+ Math.round(coords[1] * 1000) / 1000],
+ EPSG_DISPLAY_PROJECTION,
+ EPSG_PROJECTION
+ );
+ methods.routingTo(geom);
}
- var steps = '';
- if (settings.routing_steps){
- for (var i = 0; i < settings.routing_steps.length; i++){
- var geom = ol.proj.transform(
- settings.routing_steps[i].getGeometry().getCoordinates(),
- EPSG_PROJECTION,
- EPSG_DISPLAY_PROJECTION);
- if (i > 0) steps += ';';
- steps += geom[0].toFixed(5) + ':' + geom[1].toFixed(5);
+
+ var current_feature = items[4];
+ var post_load_helper = function(){
+ if (current_feature){
+ methods.showPopup(current_feature);
}
}
- var uri = extra_url
- if (settings.area_id) uri += settings.area_id + "/";
- $("#permalink").attr('href', uri + "#" + settings.permalink);
- return settings.permalink
- */
+
+ if (current_feature != "" || routing_start != ""
+ || routing_end != "" || steps != ""){
+ $(".welcome-dialog").hide();
+ }
+ return post_load_helper;
},
_register_popuphovering: function(){
$(document).on({
@@ -1443,7 +1457,7 @@ function transformCoordToLonLat(coord) {
/*
* Load markers and route from DB
*/
- loadGeoObjects: function () {
+ loadGeoObjects: function (post_load_helper) {
if($('#waiting').length){$('#waiting').show();}
if (!settings._map_loaded){
settings._load_geoobjects_requested = true;
@@ -1496,6 +1510,8 @@ function transformCoordToLonLat(coord) {
//OL3 methods.addMultiLine(feature);
}
}
+ if (typeof post_load_helper != 'undefined')
+ post_load_helper();
// var extent = settings.sourceDbFeatures.getExtent();
// settings.map.getView().fit(extent, settings.map.getSize());
// settings.map.resetLayersZIndex();
@@ -1530,7 +1546,7 @@ function transformCoordToLonLat(coord) {
/*
* Update the categories div in ajax
*/
- loadCategories: function () {
+ loadCategories: function (helper) {
var current_extent = settings.view.calculateExtent(
settings.map.getSize());
current_extent = ol.proj.transformExtent(
@@ -1558,6 +1574,7 @@ function transformCoordToLonLat(coord) {
// (in case the category is yet visible in HTML...)
methods.toggle_category();
}
+ if (helper) helper();
}
});
var _toggle_subcategories = function (category_element) {
@@ -1599,7 +1616,6 @@ function transformCoordToLonLat(coord) {
methods.hidePopup(e);
_toggle_subcategories($(this));
methods.loadGeoObjects();
- methods._get_permalink();
});
$('.subcategories li input').bind("click", function (e) {
$('#search-result').html('');
@@ -1616,7 +1632,6 @@ function transformCoordToLonLat(coord) {
}
methods.loadGeoObjects();
_toggle_categories($(this));
- methods._get_permalink();
if ($('#layer_cat_'+c_name).length){
$('#layer_cat_'+c_name).prop("checked",
this.checked);
@@ -1625,7 +1640,6 @@ function transformCoordToLonLat(coord) {
});
$('#display_submited_check').bind("click", function () {
methods.loadGeoObjects();
- methods._get_permalink();
});
// Zoom to category
$(".zoom_to_category").bind("click", function (e) {
@@ -1822,7 +1836,6 @@ function transformCoordToLonLat(coord) {
if (!settings.explicit_popup_hide){
settings.current_popup.groupDiv.onclick = methods.hidePopup;
}
- methods._get_permalink();
methods.update_permalink_activation();
}
var _repan_popup = function(){
@@ -2140,7 +2153,11 @@ function transformCoordToLonLat(coord) {
if (typeof obj == 'undefined') {
coordinates = settings.popup.getPosition();
} else {
- coordinates = obj.coordinate;
+ if (typeof obj.coordinate != 'undefined') {
+ coordinates = obj.coordinate;
+ } else {
+ coordinates = obj;
+ }
}
if (typeof coordinates == 'undefined') return;
@@ -2247,7 +2264,11 @@ function transformCoordToLonLat(coord) {
if (typeof obj == 'undefined') {
coordinates = settings.popup.getPosition();
} else {
- coordinates = obj.coordinate;
+ if (typeof obj.coordinate != 'undefined') {
+ coordinates = obj.coordinate;
+ } else {
+ coordinates = obj;
+ }
}
if (typeof coordinates == 'undefined') return;
@@ -2332,7 +2353,11 @@ function transformCoordToLonLat(coord) {
if (typeof obj == 'undefined') {
coordinates = settings.popup.getPosition();
} else {
- coordinates = obj.coordinate;
+ if (typeof obj.coordinate != 'undefined') {
+ coordinates = obj.coordinate;
+ } else {
+ coordinates = obj;
+ }
}
if (typeof coordinates == 'undefined') return;
@@ -2442,7 +2467,6 @@ function transformCoordToLonLat(coord) {
settings.current_itinerary_number = 0;
settings.current_routes_features = [];
settings.routingFeatures.clear();
- methods._get_permalink();
},
// display a route
route: function(){
@@ -2478,7 +2502,6 @@ function transformCoordToLonLat(coord) {
}
uri += step[0] + '_' + step[1];
}
- methods._get_permalink();
$.ajax({url: uri,
dataType: "json",
success: function (data) {
@@ -2980,7 +3003,7 @@ function transformCoordToLonLat(coord) {
var feats = settings.dbFeatures.getArray();
for (j in feats){
var c_marker = feats[j];
- if (c_marker.getProperties()['pk'] == feature_pk){
+ if (c_marker.getProperties()['key'] == feature_pk){
//for (j in c_marker) console.log(j + ": "+ c_marker[j]);
//c_marker.events.triggerEvent('click');
methods.openPopup(c_marker);
diff --git a/chimere/templates/chimere/blocks/map.html b/chimere/templates/chimere/blocks/map.html
index 7c1fa7b..3b75646 100644
--- a/chimere/templates/chimere/blocks/map.html
+++ b/chimere/templates/chimere/blocks/map.html
@@ -80,7 +80,7 @@ $("#{{map_id}}").show();
$("#main-map").chimere(chimere_init_options);
{% if zoom %}
- if (!permalink) $('#maps').chimere('zoom', {'area':{{zoom}} });
+ if (!permalink) $('#main-map').chimere('zoom', {'area':{{zoom}} });
{% endif %}
{{extra_map_def|safe}}
diff --git a/chimere/templates/chimere/blocks/share_bar.html b/chimere/templates/chimere/blocks/share_bar.html
index 435f59a..1c02ce3 100644
--- a/chimere/templates/chimere/blocks/share_bar.html
+++ b/chimere/templates/chimere/blocks/share_bar.html
@@ -10,6 +10,7 @@
<script language='text/javascript'>
$(function(){
$('.share_link').click(function(){
+ $('#main-map').chimere('update_permalink');
var href = $(this).attr('href');
var url = '{% url 'chimere:get-share-url' %}';
var classes = $(this).attr('class').split(' ');