summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-09-13 23:04:00 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-09-13 23:04:00 +0200
commit4248e144950d7977e25f9e6de244892275861258 (patch)
treef4c5ebd72b8259b425eb01edad344e540a98c237
parenta6e5edbde8c9053e66898e2d58bc9a2b9191b8e4 (diff)
downloadChimère-4248e144950d7977e25f9e6de244892275861258.tar.bz2
Chimère-4248e144950d7977e25f9e6de244892275861258.zip
jquery.chimere.js: adaptations for multiple maps on the same page
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js1601
1 files changed, 847 insertions, 754 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 2e8d6a8..d4b7e28 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -244,6 +244,7 @@ function transformCoordToLonLat(coord) {
// if leave to false every click on the map hide the pop-up
explicit_popup_hide: false,
controls:null,
+ popupId: 'popup',
// OL3-deprecated popupClass: OpenLayers.Popup.FramedCloud,
popupClass: null,
popupContentFull: false, // if true the detail is inside the popup
@@ -291,7 +292,12 @@ function transformCoordToLonLat(coord) {
/*
* Plugin init function
*/
+ map_id: function(item){
+ return $(item).attr('id');
+ },
init: function ( options ) {
+ var map_id = methods.map_id(this);
+
/* Manage parameters */
if (defaults.map_layers == null || ! defaults.map_layers.length){
defaults.map_layers = [
@@ -301,15 +307,15 @@ function transformCoordToLonLat(coord) {
source: new ol.source.OSM()
})];
}
- settings = $.extend({}, defaults);
- settings._revision = 0;
+ settings[map_id] = $.extend({}, defaults);
+ settings[map_id]._revision = 0;
- if ( options ) $.extend(settings, options);
+ if ( options ) $.extend(settings[map_id], options);
- if (settings.controls == null){
+ if (settings[map_id].controls == null){
/* OL3-deprecated-mobile
- if (settings.mobile){
- settings.controls = [new OpenLayers.Control.TouchNavigation({
+ if (settings[map_id].mobile){
+ settings[map_id].controls = [new OpenLayers.Control.TouchNavigation({
dragPanOptions: {
enableKinetic: true
}
@@ -317,15 +323,15 @@ function transformCoordToLonLat(coord) {
new OpenLayers.Control.Zoom()];
} else {
*/
- settings.controls = [
+ settings[map_id].controls = [
new ol.control.Attribution(),
new ol.control.ScaleLine(),
new ol.control.Zoom(),
new ol.control.FullScreen()
];
// OverviewMap mess with clustering
- if (!settings.enable_clustering){
- settings.controls.push(
+ if (!settings[map_id].enable_clustering){
+ settings[map_id].controls.push(
new ol.control.OverviewMap({
collapsed: false
})
@@ -333,26 +339,25 @@ function transformCoordToLonLat(coord) {
}
//}
}
- var map_element = $(this).attr('id');
var view_options = {
- projection: settings.projection,
+ projection: settings[map_id].projection,
center: CENTER_LONLAT,
zoom: DEFAULT_ZOOM,
- maxZoom: settings.maxZoom
+ maxZoom: settings[map_id].maxZoom
};
- if (settings.minZoom){
- view_options['minZoom'] = settings.minZoom;
+ if (settings[map_id].minZoom){
+ view_options['minZoom'] = settings[map_id].minZoom;
}
- if (settings.restricted_extent
- && settings.restricted_extent.length == 4){
+ if (settings[map_id].restricted_extent
+ && settings[map_id].restricted_extent.length == 4){
var extent = [
- Math.round(settings.restricted_extent[0] * 1000) / 1000,
- Math.round(settings.restricted_extent[1] * 1000) / 1000,
- Math.round(settings.restricted_extent[2] * 1000) / 1000,
- Math.round(settings.restricted_extent[3] * 1000) / 1000
+ Math.round(settings[map_id].restricted_extent[0] * 1000) / 1000,
+ Math.round(settings[map_id].restricted_extent[1] * 1000) / 1000,
+ Math.round(settings[map_id].restricted_extent[2] * 1000) / 1000,
+ Math.round(settings[map_id].restricted_extent[3] * 1000) / 1000
]
var point_1 = ol.proj.transform(
[extent[0], extent[1]], EPSG_DISPLAY_PROJECTION,
@@ -364,38 +369,38 @@ function transformCoordToLonLat(coord) {
point_2[0], point_2[1]]
}
- $.each(settings.map_layers, function(idx, layer){
+ $.each(settings[map_id].map_layers, function(idx, layer){
// property for permalink
layer.set('base-layer-idx', idx);
});
- settings.view = new ol.View(view_options);
+ settings[map_id].view = new ol.View(view_options);
var map_options = {
- controls: settings.controls,
- view: settings.view,
- target: map_element,
- layers: settings.map_layers
+ controls: settings[map_id].controls,
+ view: settings[map_id].view,
+ target: map_id,
+ layers: settings[map_id].map_layers
};
- settings.current_position = null;
- settings.suspend_load = false;
+ settings[map_id].current_position = null;
+ settings[map_id].suspend_load = false;
/* Create map object */
- settings.map = map = new ol.Map(map_options);
+ settings[map_id].map = map = new ol.Map(map_options);
// get interactions
- settings.map.getInteractions().forEach(function (interaction){
+ settings[map_id].map.getInteractions().forEach(function (interaction){
if (interaction instanceof ol.interaction.MouseWheelZoom){
- settings.MouseWheelZoom = interaction;
+ settings[map_id].MouseWheelZoom = interaction;
}
if (interaction instanceof ol.interaction.DragPan){
- settings.DragPan = interaction;
+ settings[map_id].DragPan = interaction;
}
});
- settings.deactivate_on_hover = [settings.MouseWheelZoom,
- settings.DragPan];
+ settings[map_id].deactivate_on_hover = [settings[map_id].MouseWheelZoom,
+ settings[map_id].DragPan];
// only display the first layer
- $.each(settings.map.getLayers().getArray(), function(i, layer){
+ $.each(settings[map_id].map.getLayers().getArray(), function(i, layer){
if (i > 0){
layer.setVisible(false);
}
@@ -403,7 +408,7 @@ function transformCoordToLonLat(coord) {
// manage context menu
var contextmenu_items = [];
- if (settings.routing){
+ if (settings[map_id].routing){
contextmenu_items = [
{
text: labels['routing_from'],
@@ -430,19 +435,19 @@ function transformCoordToLonLat(coord) {
contextmenu_items = contextmenu_items.concat([
{
text: labels['center_map'],
- callback: methods.mapCenter,
+ callback: methods._getMapCenter(map_id),
classname: 'ol-ctx-menu-center ol-ctx-menu-icon'
},
'-',
{
text: labels['zoom_in'],
classname: 'ol-ctx-menu-zoom-in ol-ctx-menu-icon',
- callback: methods.zoomIn
+ callback: methods._getZoomIn(map_id)
},
{
text: labels['zoom_out'],
classname: 'ol-ctx-menu-zoom-out ol-ctx-menu-icon',
- callback: methods.zoomOut
+ callback: methods._getZoomOut(map_id)
}
]);
@@ -462,40 +467,40 @@ function transformCoordToLonLat(coord) {
}
});
- settings.map.addControl(contextmenu);
+ settings[map_id].map.addControl(contextmenu);
}
/* OL3-deprecated
- if (settings.map_layers.length > 1){
- settings.map.addControl(new OpenLayers.Control.LayerSwitcher(
+ if (settings[map_id].map_layers.length > 1){
+ settings[map_id].map.addControl(new OpenLayers.Control.LayerSwitcher(
{roundedCorner:false}));
}
// select the default map layer
- if (!settings.selected_map_layer){
- settings.selected_map_layer = 0;
+ if (!settings[map_id].selected_map_layer){
+ settings[map_id].selected_map_layer = 0;
}
- settings.map.setBaseLayer(
- settings.map_layers[settings.selected_map_layer]);
+ settings[map_id].map.setBaseLayer(
+ settings[map_id].map_layers[settings[map_id].selected_map_layer]);
*/
- settings.layerSwitcher = new ol.control.LayerSwitcher();
- settings.map.addControl(settings.layerSwitcher);
+ settings[map_id].layerSwitcher = new ol.control.LayerSwitcher();
+ settings[map_id].map.addControl(settings[map_id].layerSwitcher);
/* marker layer */
- settings.iconStyles = new Object();
- settings.dbFeatures = new ol.Collection();
+ settings[map_id].iconStyles = new Object();
+ settings[map_id].dbFeatures = new ol.Collection();
- settings.sourceDbFeatures = new ol.source.Vector({
- features: settings.dbFeatures
+ settings[map_id].sourceDbFeatures = new ol.source.Vector({
+ features: settings[map_id].dbFeatures
});
- settings.layerDbFeatures = new ol.layer.Vector({
- source: settings.sourceDbFeatures
+ settings[map_id].layerDbFeatures = new ol.layer.Vector({
+ source: settings[map_id].sourceDbFeatures
});
/*
- settings.layerDbFeatures = new ol.layer.Image({
+ settings[map_id].layerDbFeatures = new ol.layer.Image({
source: new ol.source.ImageVector({
- source: settings.sourceDbFeatures,
+ source: settings[map_id].sourceDbFeatures,
style: function(feature, resolution){
if (feature.getGeometry().getType() == "Polygon"){
@@ -513,184 +518,186 @@ function transformCoordToLonLat(coord) {
})
});
*/
- settings.map.addLayer(settings.layerDbFeatures);
-
- // popup management
- settings.popup_item = document.getElementById('popup');
- var popup_options = {
- element: settings.popup_item,
- positioning: 'bottom-left',
- stopEvent: false
+ settings[map_id].map.addLayer(settings[map_id].layerDbFeatures);
+
+ if (!settings[map_id].edition){
+ // popup management
+ settings[map_id].popup_item = document.getElementById(settings[map_id].popupId);
+ var popup_options = {
+ element: settings[map_id].popup_item,
+ positioning: 'bottom-left',
+ stopEvent: false
+ }
+ settings[map_id].popup = new ol.Overlay(popup_options);
+ settings[map_id].map.addOverlay(settings[map_id].popup);
}
- settings.popup = new ol.Overlay(popup_options);
- settings.map.addOverlay(settings.popup);
// manage the routing
- if (settings.routing){
- settings.routing_start = null;
- settings.routing_steps = new Array();
- settings.routing_end = null;
- settings.routingFeatures = new ol.Collection();
-
- settings.sourceRoutingFeatures = new ol.source.Vector({
- features: settings.routingFeatures
+ if (settings[map_id].routing){
+ settings[map_id].routing_start = null;
+ settings[map_id].routing_steps = new Array();
+ settings[map_id].routing_end = null;
+ settings[map_id].routingFeatures = new ol.Collection();
+
+ settings[map_id].sourceRoutingFeatures = new ol.source.Vector({
+ features: settings[map_id].routingFeatures
});
- settings.layerRoutingFeatures = new ol.layer.Vector({
- source: settings.sourceRoutingFeatures
+ settings[map_id].layerRoutingFeatures = new ol.layer.Vector({
+ source: settings[map_id].sourceRoutingFeatures
});
- settings.map.addLayer(settings.layerRoutingFeatures);
+ settings[map_id].map.addLayer(settings[map_id].layerRoutingFeatures);
}
// display marker on click
- settings.map.on('click', function(evt) {
- var feature = settings.map.forEachFeatureAtPixel(
+ settings[map_id].map.on('click', function(evt) {
+ var feature = settings[map_id].map.forEachFeatureAtPixel(
evt.pixel,
function(feature, layer) {
return feature;
}
);
- if (typeof feature != 'undefined') settings.current_feature = feature;
- if (!settings.edition){
- if (methods._is_popuphovering()) return;
- $(settings.popup_item).popover('destroy');
+ if (typeof feature != 'undefined') settings[map_id].current_feature = feature;
+ if (!settings[map_id].edition){
+ if (methods._is_popuphovering(map_id)) return;
+ $(settings[map_id].popup_item).popover('destroy');
if (feature) {
// zoom on aggregated
var key = feature.get('key');
if (key && key.length > 3 && key.substring(0, 3) == 'agg' &&
- settings._zoom_need_reload){
- var current_zoom = settings.map.getView().getZoom();
- if (current_zoom < settings._zoom_need_reload){
- settings.map.getView().setZoom(settings._zoom_need_reload);
- settings.map.getView().setCenter(evt.coordinate);
+ settings[map_id]._zoom_need_reload){
+ var current_zoom = settings[map_id].map.getView().getZoom();
+ if (current_zoom < settings[map_id]._zoom_need_reload){
+ settings[map_id].map.getView().setZoom(settings[map_id]._zoom_need_reload);
+ settings[map_id].map.getView().setCenter(evt.coordinate);
}
return
}
if (key && key.length > 6 && key.substring(0, 7) == 'cluster'){
- feature = methods.clickOnCluster(feature);
+ feature = methods.clickOnCluster(map_id, feature);
} else {
- methods.openPopup(feature);
+ methods.openPopup(map_id, feature);
}
}
}
});
- map.on('pointermove', function(e) {
- var pixel = map.getEventPixel(e.originalEvent);
- var hit = map.hasFeatureAtPixel(pixel);
- var target = map.getTarget();
+ settings[map_id].map.on('pointermove', function(e) {
+ var pixel = settings[map_id].map.getEventPixel(e.originalEvent);
+ var hit = settings[map_id].map.hasFeatureAtPixel(pixel);
+ var target = settings[map_id].map.getTarget();
target = typeof target === "string" ?
document.getElementById(target) : target;
target.style.cursor = hit ? 'pointer' : '';
});
/* Vectors layer */
- settings.vectors = new ol.Collection();
+ settings[map_id].vectors = new ol.Collection();
- settings.sourceVectors = new ol.source.Vector({
- features: settings.vectors
+ settings[map_id].sourceVectors = new ol.source.Vector({
+ features: settings[map_id].vectors
});
- settings.layerVectors = new ol.layer.Vector({
- source: settings.sourceVectors
+ settings[map_id].layerVectors = new ol.layer.Vector({
+ source: settings[map_id].sourceVectors
});
- settings.map.addLayer(settings.layerVectors);
- if (settings.edition) methods.activateEdition();
+ settings[map_id].map.addLayer(settings[map_id].layerVectors);
+ if (settings[map_id].edition) methods.activateEdition(map_id);
- // OL3-deprecated settings.layerVectors.setOpacity(0.8);
+ // OL3-deprecated settings[map_id].layerVectors.setOpacity(0.8);
/* OL3-deprecated-routing
- if (settings.edition_type_is_route){
- settings.map.addControl(new OpenLayers.Control.DrawFeature(
- settings.layerVectors, OpenLayers.Handler.Path));
- settings.map.addControl(new OpenLayers.Control.ModifyFeature(
- settings.layerVectors, {clickout:false, toggle:false}));
+ if (settings[map_id].edition_type_is_route){
+ settings[map_id].map.addControl(new OpenLayers.Control.DrawFeature(
+ settings[map_id].layerVectors, OpenLayers.Handler.Path));
+ settings[map_id].map.addControl(new OpenLayers.Control.ModifyFeature(
+ settings[map_id].layerVectors, {clickout:false, toggle:false}));
}
*/
- if (settings.enable_clustering){
- settings.invisibleStyleIcon = new ol.style.Style({
+ if (settings[map_id].enable_clustering){
+ settings[map_id].invisibleStyleIcon = new ol.style.Style({
image: new ol.style.Icon({
src : MEDIA_URL+'chimere/img/marker-cluster.png', //still need something even if it's invisible
opacity : 0
})
});
- methods.enableClustering();
+ methods.enableClustering(map_id);
}
/* Markers layer */
- settings.icons = [];
- settings.layerIcons = new ol.source.Vector({
- features: settings.icons
+ settings[map_id].icons = [];
+ settings[map_id].layerIcons = new ol.source.Vector({
+ features: settings[map_id].icons
});
- settings.layerDbFeatures = new ol.layer.Vector({
- source: settings.layerIcons
+ settings[map_id].layerDbFeatures = new ol.layer.Vector({
+ source: settings[map_id].layerIcons
});
- settings.map.addLayer(settings.layerDbFeatures);
+ settings[map_id].map.addLayer(settings[map_id].layerDbFeatures);
/* OL3-deprecated
- if (settings.dynamic_categories){
- settings.map.events.register('moveend', settings.map,
+ if (settings[map_id].dynamic_categories){
+ settings[map_id].map.events.register('moveend', settings[map_id].map,
methods.loadCategories);
}
*/
/* OL3-deprecated
// TODO make a function
- if (settings.display_submited) {
+ if (settings[map_id].display_submited) {
document.getElementById('display_submited_check').checked = true;
}
*/
/* if we have some zoom and lon/lat from the init options */
- if (settings.zoom && settings.lon && settings.lat) {
- var centerLonLat = [settings.lon, settings.lat];
- settings.view.setCenter(centerLonLat);
- settings.view.setZoom(settings.zoom);
+ if (settings[map_id].zoom && settings[map_id].lon && settings[map_id].lat) {
+ var centerLonLat = [settings[map_id].lon, settings[map_id].lat];
+ settings[map_id].view.setCenter(centerLonLat);
+ settings[map_id].view.setZoom(settings[map_id].zoom);
}
/* if not zoom to the extent in cookies */
- else if (!methods.zoomToCurrentExtent(settings.map)){
+ else if (!methods.zoomToCurrentExtent(settings[map_id].map)){
/* if no extent in cookies zoom to default */
if(CENTER_LONLAT && DEFAULT_ZOOM){
- settings.view.setCenter(CENTER_LONLAT);
- settings.view.setZoom(DEFAULT_ZOOM);
+ settings[map_id].view.setCenter(CENTER_LONLAT);
+ settings[map_id].view.setZoom(DEFAULT_ZOOM);
}
}
var post_load_helper;
- if (!settings.edition){
- methods.loadCategories(function(){
- if (settings.permalink) {
+ if (!settings[map_id].edition){
+ methods.loadCategories(map_id, function(){
+ if (settings[map_id].permalink) {
post_load_helper = methods._param_map_from_permalink();
}
- methods.loadGeoObjects(post_load_helper);
+ methods.loadGeoObjects(map_id, post_load_helper);
});
} else {
- if (settings.edition_type == 'route'){
- methods.activateRouteEdit();
- } else if (settings.edition_type == 'polygon'){
- methods.activatePolygonEdit();
+ if (settings[map_id].edition_type == 'route'){
+ methods.activateRouteEdit(map_id);
+ } else if (settings[map_id].edition_type == 'polygon'){
+ methods.activatePolygonEdit(map_id);
} else {
- methods.activateMarkerEdit();
+ methods.activateMarkerEdit(map_id);
}
}
/* register reload on move once the map is loaded */
- settings._map_loaded = false;
- settings._cache_boundingbox = false;
- settings._reload_on_move = function(){};
- settings.map.once("postcompose", function(){
- if (settings.reload_on_move){
- methods.register_reload_on_move();
+ settings[map_id]._map_loaded = false;
+ settings[map_id]._cache_boundingbox = false;
+ settings[map_id]._reload_on_move = function(){};
+ settings[map_id].map.once("postcompose", function(){
+ if (settings[map_id].reload_on_move){
+ methods.register_reload_on_move(map_id);
}
- settings.map.on('moveend', methods._move_end);
+ settings[map_id].map.on('moveend', methods._move_end);
- settings._map_loaded = true;
- if (settings._load_geoobjects_requested){
- methods.loadGeoObjects(post_load_helper);
+ settings[map_id]._map_loaded = true;
+ if (settings[map_id]._load_geoobjects_requested){
+ methods.loadGeoObjects(map_id, post_load_helper);
}
});
$("#permalink").click(methods.update_permalink);
@@ -698,43 +705,43 @@ function transformCoordToLonLat(coord) {
return;
/*
- if (settings.routing_start_lon && settings.routing_start_lat){
+ if (settings[map_id].routing_start_lon && settings[map_id].routing_start_lat){
/// OL3-TODO
- settings.current_position = new OpenLayers.LonLat(
- settings.routing_start_lon, settings.routing_start_lat
+ settings[map_id].current_position = new OpenLayers.LonLat(
+ settings[map_id].routing_start_lon, settings[map_id].routing_start_lat
).transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION);
methods.routingFrom();
}
- if (settings.routing_end_lon && settings.routing_end_lat){
+ if (settings[map_id].routing_end_lon && settings[map_id].routing_end_lat){
/// OL3-TODO
- settings.current_position = new OpenLayers.LonLat(
- settings.routing_end_lon, settings.routing_end_lat
+ settings[map_id].current_position = new OpenLayers.LonLat(
+ settings[map_id].routing_end_lon, settings[map_id].routing_end_lat
).transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION);
methods.routingTo();
}
- if (settings.routing_steps_lonlat){
+ if (settings[map_id].routing_steps_lonlat){
/// OL3-TODO
- for (var i = 0; i < settings.routing_steps_lonlat.length/2; i++) {
- lon = settings.routing_steps_lonlat[i*2];
- lat = settings.routing_steps_lonlat[i*2+1];
- settings.current_position = new OpenLayers.LonLat(lon, lat
+ for (var i = 0; i < settings[map_id].routing_steps_lonlat.length/2; i++) {
+ lon = settings[map_id].routing_steps_lonlat[i*2];
+ lat = settings[map_id].routing_steps_lonlat[i*2+1];
+ settings[map_id].current_position = new OpenLayers.LonLat(lon, lat
).transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION);
methods.routingAddStep();
}
}
// verify that the initial display_feature is displayed
- if (settings.display_feature){
+ if (settings[map_id].display_feature){
/// OL3-TODO
var is_displayed = false;
- for(j=0; j<settings.layerDbFeatures.markers.length;j++){
- var c_marker = settings.layerDbFeatures.markers[j];
- if(c_marker.pk == settings.display_feature){
+ for(j=0; j<settings[map_id].layerDbFeatures.markers.length;j++){
+ var c_marker = settings[map_id].layerDbFeatures.markers[j];
+ if(c_marker.pk == settings[map_id].display_feature){
is_displayed = true;
}
}
if (!is_displayed){
- methods.loadMarker(settings.display_feature);
+ methods.loadMarker(settings[map_id].display_feature);
}
}
/// OL3-TODO
@@ -746,47 +753,48 @@ function transformCoordToLonLat(coord) {
/*
* hovering management
*/
- _set_animation: function(duration){
- if (!duration) duration = settings.animation_duration;
- var v = settings.map.getView();
+ _set_animation: function(map_id, duration){
+ if (!duration) duration = settings[map_id].animation_duration;
+ var v = settings[map_id].map.getView();
var pan = ol.animation.pan(
{duration: duration, source: v.getCenter()})
var zoom = ol.animation.zoom(
{duration: duration, resolution: v.getResolution()})
- settings.map.beforeRender(pan, zoom);
+ settings[map_id].map.beforeRender(pan, zoom);
},
- _is_popuphovering: function(){
+ _is_popuphovering: function(map_id){
if ($('.popover-content').is(':visible') &&
$('.popover-content:hover').length > 0){
- for (idx in settings.deactivate_on_hover){
- settings.deactivate_on_hover[idx].setActive(false);
+ for (idx in settings[map_id].deactivate_on_hover){
+ settings[map_id].deactivate_on_hover[idx].setActive(false);
return true;
}
} else {
- for (idx in settings.deactivate_on_hover){
- settings.deactivate_on_hover[idx].setActive(true);
+ for (idx in settings[map_id].deactivate_on_hover){
+ settings[map_id].deactivate_on_hover[idx].setActive(true);
return false;
}
}
},
_move_end: function(e){
// prevent too fast reloading when UI is inconsistent
+ var map_id = e.map.getTarget();
var d = new Date();
var n = d.getTime();
- if (typeof settings._move_end_time != 'undefined'){
- if ((n - settings._move_end_time) < 500) return;
+ if (typeof settings[map_id]._move_end_time != 'undefined'){
+ if ((n - settings[map_id]._move_end_time) < 500) return;
}
- settings._move_end_time = n;
- settings._reload_on_move(e);
+ settings[map_id]._move_end_time = n;
+ settings[map_id]._reload_on_move(e);
},
update_permalink: function(e){
- var view = settings.map.getView();
+ var view = settings[map_id].map.getView();
var center = ol.proj.transform(
view.getCenter(),
EPSG_PROJECTION,
EPSG_DISPLAY_PROJECTION);
var layers = '';
- $.each(settings.map.getLayers().getArray(), function(i, l){
+ $.each(settings[map_id].map.getLayers().getArray(), function(i, l){
var idx = l.getProperties()['base-layer-idx'];
if (typeof idx != 'undefined' && String(idx) != '0' &&
l.getVisible()){
@@ -796,46 +804,46 @@ function transformCoordToLonLat(coord) {
});
var current_feature = '';
- if (settings.current_feature)
- current_feature = settings.current_feature.getId();
+ if (settings[map_id].current_feature)
+ current_feature = settings[map_id].current_feature.getId();
var routing_speed = '';
- if (settings.routing_speed)
- routing_speed = settings.routing_speed;
+ if (settings[map_id].routing_speed)
+ routing_speed = settings[map_id].routing_speed;
var routing_transport = '';
- if (settings.routing_transport)
- routing_transport = settings.routing_transport;
+ if (settings[map_id].routing_transport)
+ routing_transport = settings[map_id].routing_transport;
var routing_start = '';
- if (settings.routing_start){
+ if (settings[map_id].routing_start){
var geom = ol.proj.transform(
- settings.routing_start.getGeometry().getCoordinates(),
+ settings[map_id].routing_start.getGeometry().getCoordinates(),
EPSG_PROJECTION,
EPSG_DISPLAY_PROJECTION);
routing_start = geom[0].toFixed(5) + ':' + geom[1].toFixed(5);
}
var routing_end = '';
- if (settings.routing_end){
+ if (settings[map_id].routing_end){
var geom = ol.proj.transform(
- settings.routing_end.getGeometry().getCoordinates(),
+ settings[map_id].routing_end.getGeometry().getCoordinates(),
EPSG_PROJECTION,
EPSG_DISPLAY_PROJECTION);
routing_end = geom[0].toFixed(5) + ':' + geom[1].toFixed(5);
}
var steps = '';
- if (settings.routing_steps){
- for (var i = 0; i < settings.routing_steps.length; i++){
+ if (settings[map_id].routing_steps){
+ for (var i = 0; i < settings[map_id].routing_steps.length; i++){
var geom = ol.proj.transform(
- settings.routing_steps[i].getGeometry().getCoordinates(),
+ settings[map_id].routing_steps[i].getGeometry().getCoordinates(),
EPSG_PROJECTION,
EPSG_DISPLAY_PROJECTION);
if (i > 0) steps += ';';
steps += geom[0].toFixed(5) + ':' + geom[1].toFixed(5);
}
}
- settings.permalink = view.getZoom() + ';'
+ settings[map_id].permalink = view.getZoom() + ';'
+ center[0].toFixed(5) + ':'
+ center[1].toFixed(5) + ';'
+ layers + ';'
- + settings.checked_categories.join('-')+ ';'
+ + settings[map_id].checked_categories.join('-')+ ';'
+ current_feature + ';'
+ routing_speed + ';'
+ routing_transport + ';'
@@ -843,14 +851,14 @@ function transformCoordToLonLat(coord) {
+ routing_end + ';'
+ steps;
var uri = extra_url
- if (settings.area_id) uri += settings.area_id + "/";
- $("#permalink").attr('href', uri + "#" + settings.permalink);
- return settings.permalink
+ if (settings[map_id].area_id) uri += settings[map_id].area_id + "/";
+ $("#permalink").attr('href', uri + "#" + settings[map_id].permalink);
+ return settings[map_id].permalink
},
_param_map_from_permalink: function(){
- var items = settings.permalink.split(';');
+ var items = settings[map_id].permalink.split(';');
- var view = settings.map.getView();
+ var view = settings[map_id].map.getView();
/* zoom & center */
if (items[1]){
@@ -871,7 +879,7 @@ function transformCoordToLonLat(coord) {
/* layers */
if (items[2]){
var layers = items[2].split(':');
- $.each(settings.map.getLayers().getArray(), function(i, l){
+ $.each(settings[map_id].map.getLayers().getArray(), function(i, l){
var idx = l.getProperties()['base-layer-idx'];
if (typeof idx != 'undefined' && String(idx) != '0'){
if (layers.indexOf(String(idx)) != -1){
@@ -899,10 +907,10 @@ function transformCoordToLonLat(coord) {
var routing_speed = items[5];
if (routing_speed)
- settings.routing_speed = routing_speed;
+ settings[map_id].routing_speed = routing_speed;
var routing_transport = items[6];
if (routing_transport)
- settings.routing_transport = routing_transport;
+ settings[map_id].routing_transport = routing_transport;
var steps = items[9];
if (steps){
@@ -944,9 +952,9 @@ function transformCoordToLonLat(coord) {
if (current_feature){
methods.showPopup(current_feature);
}
- settings.layerDbFeatures.dispatchEvent('change');
- settings.clusterLayer.dispatchEvent('change');
- settings.map.render();
+ settings[map_id].layerDbFeatures.dispatchEvent('change');
+ settings[map_id].clusterLayer.dispatchEvent('change');
+ settings[map_id].map.render();
}
if (current_feature != "" || routing_start != ""
@@ -955,45 +963,45 @@ function transformCoordToLonLat(coord) {
}
return post_load_helper;
},
- _register_popuphovering: function(){
+ _register_popuphovering: function(map_id){
$(document).on({
mouseenter: function(evt) {
- for (idx in settings.deactivate_on_hover){
- settings.deactivate_on_hover[idx].setActive(false);
+ for (idx in settings[map_id].deactivate_on_hover){
+ settings[map_id].deactivate_on_hover[idx].setActive(false);
}
},
mouseleave: function(evt) {
- for (idx in settings.deactivate_on_hover){
- settings.deactivate_on_hover[idx].setActive(true);
+ for (idx in settings[map_id].deactivate_on_hover){
+ settings[map_id].deactivate_on_hover[idx].setActive(true);
}
}
}, '.popover-content');
- methods._is_popuphovering();
+ methods._is_popuphovering(map_id);
},
- _unregister_popuphovering: function(){
- for (idx in settings.deactivate_on_hover){
- settings.deactivate_on_hover[idx].setActive(true);
+ _unregister_popuphovering: function(map_id){
+ for (idx in settings[map_id].deactivate_on_hover){
+ settings[map_id].deactivate_on_hover[idx].setActive(true);
}
},
- register_reload_on_move: function(){
- settings._reload_on_move = function(evnt){
- settings._revision += 1;
- var map = settings.map;
+ register_reload_on_move: function(map_id){
+ settings[map_id]._reload_on_move = function(evnt){
+ settings[map_id]._revision += 1;
+ var map = settings[map_id].map;
var current_extent = ol.proj.transformExtent(
map.getView().calculateExtent(map.getSize()),
EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION
);
- var current_zoom = settings.map.getView().getZoom();
+ var current_zoom = settings[map_id].map.getView().getZoom();
var init;
- if (!settings._cache_boundingbox) init = true;
+ if (!settings[map_id]._cache_boundingbox) init = true;
if (init ||
- !ol.extent.containsCoordinate(settings._cache_boundingbox,
+ !ol.extent.containsCoordinate(settings[map_id]._cache_boundingbox,
current_extent) ||
- (settings._zoom_need_reload &&
- current_zoom >= settings._zoom_need_reload)
+ (settings[map_id]._zoom_need_reload &&
+ current_zoom >= settings[map_id]._zoom_need_reload)
){
// enlarge current extent to cache values
x_extent = Math.abs(current_extent[2] - current_extent[0]);
@@ -1004,46 +1012,46 @@ function transformCoordToLonLat(coord) {
current_extent[3] = current_extent[3] + y_extent;
if (!isNaN(current_extent[0]) && !isNaN(current_extent[1])
&& !isNaN(current_extent[2]) && !isNaN(current_extent[3])){
- settings._cache_boundingbox = current_extent;
- settings._cache_zoom = current_zoom;
+ settings[map_id]._cache_boundingbox = current_extent;
+ settings[map_id]._cache_zoom = current_zoom;
}
- if(!init) methods.loadGeoObjects();
+ if(!init) methods.loadGeoObjects(map_id);
}
};
- settings._reload_on_move();
+ settings[map_id]._reload_on_move();
},
- deactivateEdition: function(){
- settings.edition = false;
- if (typeof settings.features != 'undefined'){
- settings.map.removeInteraction(settings.draw);
- settings.map.removeInteraction(settings.modify);
- settings.editionSource.clear();
+ deactivateEdition: function(map_id){
+ settings[map_id].edition = false;
+ if (typeof settings[map_id].features != 'undefined'){
+ settings[map_id].map.removeInteraction(settings[map_id].draw);
+ settings[map_id].map.removeInteraction(settings[map_id].modify);
+ settings[map_id].editionSource.clear();
}
},
- activateEdition: function(new_edition_type){
- settings.edition = true;
- if (new_edition_type) settings.edition_type = new_edition_type;
+ activateEdition: function(map_id, new_edition_type){
+ settings[map_id].edition = true;
+ if (new_edition_type) settings[map_id].edition_type = new_edition_type;
- if (typeof settings.features == 'undefined'){
- settings.features = new ol.Collection();
+ if (typeof settings[map_id].features == 'undefined'){
+ settings[map_id].features = new ol.Collection();
- settings.editionSource = new ol.source.Vector(
- {features: settings.features});
+ settings[map_id].editionSource = new ol.source.Vector(
+ {features: settings[map_id].features});
- settings.editionSource.on(
+ settings[map_id].editionSource.on(
'changefeature',
function(changed) {
- if (changed) methods.updateInput();
+ if (changed) methods.updateInput(map_id);
});
- settings.editionSource.on(
+ settings[map_id].editionSource.on(
'addfeature',
function(changed) {
- if (changed) methods.updateInput();
+ if (changed) methods.updateInput(map_id);
});
- settings.editionVector = new ol.layer.Vector({
- source: settings.editionSource,
+ settings[map_id].editionVector = new ol.layer.Vector({
+ source: settings[map_id].editionSource,
style: new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(180, 180, 180, 0.3)'
@@ -1060,54 +1068,54 @@ function transformCoordToLonLat(coord) {
})
})
});
- settings.map.addLayer(settings.editionVector);
+ settings[map_id].map.addLayer(settings[map_id].editionVector);
} else {
- settings.map.removeInteraction(settings.draw);
- settings.map.removeInteraction(settings.modify);
- settings.editionSource.clear();
+ settings[map_id].map.removeInteraction(settings[map_id].draw);
+ settings[map_id].map.removeInteraction(settings[map_id].modify);
+ settings[map_id].editionSource.clear();
}
var edition_type = 'Point';
- if (settings.edition_type == 'route') edition_type = 'LineString';
- if (settings.edition_type == 'polygon') edition_type = 'Polygon';
+ if (settings[map_id].edition_type == 'route') edition_type = 'LineString';
+ if (settings[map_id].edition_type == 'polygon') edition_type = 'Polygon';
- settings.draw = new ol.interaction.Draw({
- source: settings.editionSource,
+ settings[map_id].draw = new ol.interaction.Draw({
+ source: settings[map_id].editionSource,
type: (edition_type),
});
- settings.draw_activated = false;
+ settings[map_id].draw_activated = false;
- settings.draw.on("drawend", function() {
- settings.map.removeInteraction(settings.draw);
- settings.draw_activated = false;
+ settings[map_id].draw.on("drawend", function() {
+ settings[map_id].map.removeInteraction(settings[map_id].draw);
+ settings[map_id].draw_activated = false;
});
- settings.modify = new ol.interaction.Modify({
- features: settings.features,
+ settings[map_id].modify = new ol.interaction.Modify({
+ features: settings[map_id].features,
deleteCondition: function(event) {
return ol.events.condition.shiftKeyOnly(event) &&
ol.events.condition.singleClick(event);
}
});
- settings.modify_activated = false;
+ settings[map_id].modify_activated = false;
},
- enableClustering: function(){
+ enableClustering: function(map_id){
// Style clusters and hide items inside clusters
- settings._styleCache = {};
- settings._remindOldStyle = {};
- settings._remindUpdated = {};
- settings._currentRemind = -1;
+ settings[map_id]._styleCache = {};
+ settings[map_id]._remindOldStyle = {};
+ settings[map_id]._remindUpdated = {};
+ settings[map_id]._currentRemind = -1;
function clusterGetStyle (feature, resolution){
var key = feature.set('key', 'cluster');
var features = feature.get('features');
var size = features.length;
feature.set('size', size);
- var style = settings._styleCache[size];
+ var style = settings[map_id]._styleCache[size];
// no cluster for lonely marker
if (!style && size > 1){
var color = size>25 ? "192,0,0" : size>8 ? "255,128,0" : "0,128,0";
var radius = Math.max(8, Math.min(size*0.75, 20));
var lbl = size.toString();
- style = settings._styleCache[size] = [
+ style = settings[map_id]._styleCache[size] = [
new ol.style.Style({
image: new ol.style.Circle({
radius: radius,
@@ -1129,54 +1137,54 @@ function transformCoordToLonLat(coord) {
];
}
// don't reapply the style when no modif have been opered
- if (settings._currentRemind != settings._revision){
- settings._remindUpdated = [];
- settings._currentRemind = settings._revision;
+ if (settings[map_id]._currentRemind != settings[map_id]._revision){
+ settings[map_id]._remindUpdated = [];
+ settings[map_id]._currentRemind = settings[map_id]._revision;
}
if (size > 1){
// marker himself disappear
for (idx in features){
var feat = features[idx];
- if (!settings._remindUpdated[feat.getId()]){
- if (!settings._remindOldStyle[feat.getId()]){
- settings._remindOldStyle[feat.getId()] = feat.getStyle();
+ if (!settings[map_id]._remindUpdated[feat.getId()]){
+ if (!settings[map_id]._remindOldStyle[feat.getId()]){
+ settings[map_id]._remindOldStyle[feat.getId()] = feat.getStyle();
}
- feat.setStyle(settings.invisibleStyleIcon);
- settings._remindUpdated[feat.getId()] = 1;
+ feat.setStyle(settings[map_id].invisibleStyleIcon);
+ settings[map_id]._remindUpdated[feat.getId()] = 1;
}
}
} else {
// or re-appear
var feat = features[0];
- if (!settings._remindUpdated[feat.getId()] &&
- settings._remindOldStyle[feat.getId()]){
- feat.setStyle(settings._remindOldStyle[feat.getId()]);
- settings._remindUpdated[feat.getId()] = 1;
+ if (!settings[map_id]._remindUpdated[feat.getId()] &&
+ settings[map_id]._remindOldStyle[feat.getId()]){
+ feat.setStyle(settings[map_id]._remindOldStyle[feat.getId()]);
+ settings[map_id]._remindUpdated[feat.getId()] = 1;
}
}
return style;
}
// Cluster Source
- settings.clusterSource = new ol.source.Cluster({
+ settings[map_id].clusterSource = new ol.source.Cluster({
distance: 40,
source: new ol.source.Vector()
});
// Animated cluster layer
- settings.clusterLayer = new ol.layer.Vector({
+ settings[map_id].clusterLayer = new ol.layer.Vector({
name: 'Cluster',
- source: settings.clusterSource,
+ source: settings[map_id].clusterSource,
// Cluster style
style: clusterGetStyle
});
- settings.map.addLayer(settings.clusterLayer);
+ settings[map_id].map.addLayer(settings[map_id].clusterLayer);
},
- clickOnCluster: function(feature, zoom_level, duration, nb_zoom,
+ clickOnCluster: function(map_id, feature, zoom_level, duration, nb_zoom,
current_nb_items){
if (!duration){
// zoom animation must be slower
- duration = settings.animation_duration * 2;
+ duration = settings[map_id].animation_duration * 2;
}
if (!nb_zoom) nb_zoom = 0;
@@ -1189,7 +1197,7 @@ function transformCoordToLonLat(coord) {
return feature;
}
- var v = settings.map.getView();
+ var v = settings[map_id].map.getView();
if (!zoom_level) zoom_level = v.getZoom() + 1;
methods._set_animation(duration);
@@ -1197,7 +1205,7 @@ function transformCoordToLonLat(coord) {
if ($("#panel").is(":visible")){
var delta_x = $("#panel").width() / 2;
// paning before zoom base delta divided by 2
- if (zoom_level < settings.maxZoom){
+ if (zoom_level < settings[map_id].maxZoom){
delta_x = delta_x / 2;
}
v.centerOn(
@@ -1208,7 +1216,7 @@ function transformCoordToLonLat(coord) {
v.setCenter(feature.getGeometry().getCoordinates());
}
// max zoom reached
- if (zoom_level >= settings.maxZoom){
+ if (zoom_level >= settings[map_id].maxZoom){
return methods.displayClusterDetail(feature);
}
@@ -1217,19 +1225,19 @@ function transformCoordToLonLat(coord) {
nb_zoom += 1;
// something wrong stop zoom!
- if (nb_zoom > settings.maxZoom) return feature;
+ if (nb_zoom > settings[map_id].maxZoom) return feature;
// wait for the animation to finish before rezoom
return setTimeout(
function(){
// our cluster must be at the center (if it exists after zoom)
- var pixel = settings.map.getPixelFromCoordinate(v.getCenter());
+ var pixel = settings[map_id].map.getPixelFromCoordinate(v.getCenter());
if ($("#panel").is(":visible")){
pixel[0] = pixel[0] + $("#panel").width() / 2;
}
var new_feature;
- settings.map.forEachFeatureAtPixel(
+ settings[map_id].map.forEachFeatureAtPixel(
pixel, function(feat, layer){
- if (layer == settings.clusterLayer){
+ if (layer == settings[map_id].clusterLayer){
new_feature = feat;
return true
}
@@ -1237,6 +1245,7 @@ function transformCoordToLonLat(coord) {
);
if (new_feature){
return methods.clickOnCluster(
+ map_id,
new_feature, zoom_level + 1, duration, nb_zoom,
current_nb_items);
}
@@ -1259,10 +1268,10 @@ function transformCoordToLonLat(coord) {
/*
$('#cluster_list').dialog('open');
$("#cluster_list").on("dialogclose", methods.cleanCluster);
- settings.map.setCenter(
+ settings[map_id].map.setCenter(
feature.geometry.getBounds().getCenterLonLat());
// register after the display
- settings.clustered_feature = feature.cluster;
+ settings[map_id].clustered_feature = feature.cluster;
*/
jQuery(".cluster_list").click(
@@ -1277,14 +1286,14 @@ function transformCoordToLonLat(coord) {
var offset_x = 0.1;
var offset_y = -(radius + radius / 2);
var geom = feat.getGeometry();
- methods.openPopup(feat, offset_x, offset_y, geom.getCoordinates());
+ methods.openPopup(map_id, feat, offset_x, offset_y, geom.getCoordinates());
e.stopPropagation();
return false;
});
return feature;
},
- openPopup: function(feature, offset_x, offset_y, alt_coordinates){
- settings.current_feature = feature;
+ openPopup: function(map_id, feature, offset_x, offset_y, alt_coordinates){
+ settings[map_id].current_feature = feature;
if (!offset_x){
offset_x = feature.get('popup_offset_x');
if (!offset_x) offset_x = 0;
@@ -1294,41 +1303,41 @@ function transformCoordToLonLat(coord) {
if (!offset_y) offset_y = 0;
}
if (alt_coordinates){
- settings.popup.setPosition(alt_coordinates);
+ settings[map_id].popup.setPosition(alt_coordinates);
} else {
var geom = feature.getGeometry();
if (geom.getType() == 'Point'){
- settings.popup.setPosition(geom.getCoordinates());
+ settings[map_id].popup.setPosition(geom.getCoordinates());
} else if (geom.getType() == 'Polygon'){
- settings.popup.setPosition(geom.getInteriorPoint().getCoordinates());
+ settings[map_id].popup.setPosition(geom.getInteriorPoint().getCoordinates());
} else if (geom.getType() == 'LineString'){
- settings.popup.setPosition(geom.getCoordinateAt(0.5));
+ settings[map_id].popup.setPosition(geom.getCoordinateAt(0.5));
} else if (geom.getType() == 'MultipleLineString'){
- settings.popup.setPosition(geom.getLineString(0).getCoordinatesAt(0.5));
+ settings[map_id].popup.setPosition(geom.getLineString(0).getCoordinatesAt(0.5));
}
}
- settings.popup.setOffset([offset_x, offset_y]);
- $(settings.popup_item).popover({
+ settings[map_id].popup.setOffset([offset_x, offset_y]);
+ $(settings[map_id].popup_item).popover({
'placement': 'top',
'html': true,
'content': feature.get('name')
});
// when the popup is closed
- $(settings.popup_item).on('hidden.bs.popover', function () {
- settings.current_feature = null;
- methods._unregister_popuphovering();
+ $(settings[map_id].popup_item).on('hidden.bs.popover', function () {
+ settings[map_id].current_feature = null;
+ methods._unregister_popuphovering(map_id);
})
- $(settings.popup_item).popover('show');
- methods.display_feature_detail(feature.get('key'), feature.get('name'));
+ $(settings[map_id].popup_item).popover('show');
+ methods.display_feature_detail(map_id, feature.get('key'), feature.get('name'));
},
/* end of new ol3 */
- update_permalink_activation:function(){
- if (settings.checked_categories.length ||
- settings.current_feature ||
- settings.routing_speed ||
- settings.routing_transport ||
- settings.routing_start ||
- settings.routing_end){
+ update_permalink_activation:function(map_id){
+ if (settings[map_id].checked_categories.length ||
+ settings[map_id].current_feature ||
+ settings[map_id].routing_speed ||
+ settings[map_id].routing_transport ||
+ settings[map_id].routing_start ||
+ settings[map_id].routing_end){
$("#permalink").removeAttr("disabled");
} else {
$("#permalink").attr("disabled", "disabled");
@@ -1357,61 +1366,78 @@ function transformCoordToLonLat(coord) {
},
activateContextMenu: function(){
- settings.edition_type_is_route = false;
- // settings.map.events.unregister('click', settings.map,
+ settings[map_id].edition_type_is_route = false;
+ // settings[map_id].map.events.unregister('click', settings[map_id].map,
// methods.setMarker);
- // settings.map.events.register('click', settings.map,
+ // settings[map_id].map.events.register('click', settings[map_id].map,
// methods.displayMapMenu);
},
- activatePolygonEdit: function(){
+ activatePolygonEdit: function(map_id){
// TODO OL3
return;
},
- activateRouteEdit: function(){
+ activateRouteEdit: function(map_id){
// TODO OL3
return;
/*
- settings.edition_type_is_route = true;
+ settings[map_id].edition_type_is_route = true;
methods.cleanMarker();
- // settings.map.events.unregister('click', settings.map,
+ // settings[map_id].map.events.unregister('click', settings[map_id].map,
// methods.setMarker);
- if (settings.routing){
- settings.map.events.register('click', settings.map,
+ if (settings[map_id].routing){
+ settings[map_id].map.events.register('click', settings[map_id].map,
methods.displayMapMenu);
} else {
- settings.layerVectors.events.register('featuremodified',
- settings.layerVectors, helpers.updateRouteForm);
- settings.layerVectors.events.register('featureadded',
- settings.layerVectors, helpers.featureRouteCreated);
+ settings[map_id].layerVectors.events.register('featuremodified',
+ settings[map_id].layerVectors, helpers.updateRouteForm);
+ settings[map_id].layerVectors.events.register('featureadded',
+ settings[map_id].layerVectors, helpers.featureRouteCreated);
}
*/
},
- activateMarkerEdit: function(){
- settings.edition_type_is_route = false;
+ activateMarkerEdit: function(map_id){
+ settings[map_id].edition_type_is_route = false;
if ($('#chimere_map_menu').length){
$('#chimere_map_menu').hide();
}
/*
- if (settings.current_popup != null) {
- settings.current_popup.hide();
+ if (settings[map_id].current_popup != null) {
+ settings[map_id].current_popup.hide();
}*/
- // settings.map.events.unregister('click', settings.map,
+ // settings[map_id].map.events.unregister('click', settings[map_id].map,
// methods.displayMapMenu);
- //settings.map.events.register('click', settings.map,
+ //settings[map_id].map.events.register('click', settings[map_id].map,
// methods.setMarker);
},
// change map_layer
changeMapLayer: function(map_idx){
- settings.map.setBaseLayer(settings.map_layers[map_idx]);
+ settings[map_id].map.setBaseLayer(settings[map_id].map_layers[map_idx]);
},
- // init the context menu
+ // zoom in from the map menu
+ _getZoomIn: function(map_id){
+ zoomIn = function(){
+ v = settings[map_id].map.getView();
+ var zoom_level = v.getZoom() + 1;
+ if (zoom_level >= settings[map_id].maxZoom){
+ return;
+ }
+ methods._set_animation(map_id);
+ v.setZoom(zoom_level);
+ }
+ return zoomIn;
+ },
zoomIn: function(){
- v = settings.map.getView();
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ v = settings[map_id].map.getView();
var zoom_level = v.getZoom() + 1;
- if (zoom_level >= settings.maxZoom){
+ if (zoom_level >= settings[map_id].maxZoom){
return;
}
methods._set_animation();
@@ -1419,10 +1445,27 @@ function transformCoordToLonLat(coord) {
},
// zoom out from the map menu
+ _getZoomOut: function(map_id){
+ zoomOut = function(){
+ v = settings[map_id].map.getView();
+ var zoom_level = v.getZoom() - 1;
+ if (zoom_level <= settings[map_id].minZoom){
+ return;
+ }
+ methods._set_animation(map_id);
+ v.setZoom(zoom_level);
+ }
+ return zoomOut;
+ },
zoomOut: function(){
- v = settings.map.getView();
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ v = settings[map_id].map.getView();
var zoom_level = v.getZoom() - 1;
- if (zoom_level <= settings.minZoom){
+ if (zoom_level <= settings[map_id].minZoom){
return;
}
methods._set_animation();
@@ -1430,33 +1473,36 @@ function transformCoordToLonLat(coord) {
},
// center from the map menu
- mapCenter: function(obj){
- methods._set_animation();
- if ($("#panel").is(":visible")){
- var delta_x = $("#panel").width() / 2;
- settings.view.centerOn(
- obj.coordinate,
- [0, 0],
- [delta_x, 0]);
- } else {
- settings.view.setCenter(obj.coordinate);
+ _getMapCenter: function(map_id){
+ mapCenter = function(obj){
+ methods._set_animation(map_id);
+ if ($("#panel").is(":visible")){
+ var delta_x = $("#panel").width() / 2;
+ settings[map_id].view.centerOn(
+ obj.coordinate,
+ [0, 0],
+ [delta_x, 0]);
+ } else {
+ settings[map_id].view.setCenter(obj.coordinate);
+ }
}
+ return mapCenter
},
// center from the lon lat
mapCenterOnLonLat: function(options){
- settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]);
- settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION,
- settings.map.getProjectionObject());
- settings.map.setCenter(settings.current_position);
+ settings[map_id].current_position = new OpenLayers.LonLat(options["lon"], options["lat"]);
+ settings[map_id].current_position = settings[map_id].current_position.transform(EPSG_DISPLAY_PROJECTION,
+ settings[map_id].map.getProjectionObject());
+ settings[map_id].map.setCenter(settings[map_id].current_position);
},
// set current position
setCurrentPosition: function(lonlat){
- settings.current_position = lonlat;
+ settings[map_id].current_position = lonlat;
},
addLayer: function(layer){
- settings.map.addLayer(layer);
+ settings[map_id].map.addLayer(layer);
},
/*
zoomOnCluster: function(feature){
@@ -1478,16 +1524,16 @@ function transformCoordToLonLat(coord) {
$('#cluster_list').html(content);
$('#cluster_list').dialog('open');
$("#cluster_list").on("dialogclose", methods.cleanCluster);
- settings.map.setCenter(
+ settings[map_id].map.setCenter(
feature.geometry.getBounds().getCenterLonLat());
// register after the display
- settings.clustered_feature = feature.cluster;
+ settings[map_id].clustered_feature = feature.cluster;
jQuery(".cluster_list").click(
function(e){
$('#cluster_list').dialog('close');
var splitted = $(this).attr('id').split('_');
var index = splitted[splitted.length-1];
- m = settings.clustered_feature[parseInt(index)].attributes.marker;
+ m = settings[map_id].clustered_feature[parseInt(index)].attributes.marker;
m.events.triggerEvent('click');
e.stopPropagation();
});
@@ -1501,38 +1547,38 @@ function transformCoordToLonLat(coord) {
success: function (data) {
var c_feat = null;
for (idx in data){
- c_feat = methods.addMarker(data[idx]);
+ c_feat = methods.addMarker(map_id, data[idx]);
}
if (c_feat && open_popup != 'undefined' && open_popup)
- methods.openPopup(c_feat);
+ methods.openPopup(map_id, c_feat);
}
});
},
/*
* Load markers and route from DB
*/
- loadGeoObjects: function (post_load_helper) {
+ loadGeoObjects: function (map_id, post_load_helper) {
if($('#waiting').length){$('#waiting').show();}
- if (!settings._map_loaded){
- settings._load_geoobjects_requested = true;
+ if (!settings[map_id]._map_loaded){
+ settings[map_id]._load_geoobjects_requested = true;
return;
}
- settings._load_geoobjects_requested = false;
+ settings[map_id]._load_geoobjects_requested = false;
- helpers.retrieve_checked_categories();
- var ids = settings.checked_categories.join('_');
+ helpers.retrieve_checked_categories(map_id);
+ var ids = settings[map_id].checked_categories.join('_');
if (!ids) ids = '0';
var uri = extra_url + "getGeoObjects/" + ids;
- if (settings.display_submited) uri += "/A_S";
+ if (settings[map_id].display_submited) uri += "/A_S";
var data = {};
- if (settings._cache_boundingbox){
+ if (settings[map_id]._cache_boundingbox){
data = {
- 'min_lon': settings._cache_boundingbox[0],
- 'min_lat': settings._cache_boundingbox[1],
- 'max_lon': settings._cache_boundingbox[2],
- 'max_lat': settings._cache_boundingbox[3],
- 'zoom_level': settings._cache_zoom
+ 'min_lon': settings[map_id]._cache_boundingbox[0],
+ 'min_lat': settings[map_id]._cache_boundingbox[1],
+ 'max_lon': settings[map_id]._cache_boundingbox[2],
+ 'max_lat': settings[map_id]._cache_boundingbox[3],
+ 'zoom_level': settings[map_id]._cache_zoom
};
}
$.ajax({url: uri,
@@ -1540,69 +1586,69 @@ function transformCoordToLonLat(coord) {
data: data,
success: function (data) {
//var start = new Date().getTime();
- settings.dbFeatures.clear();
- settings.vectors.clear();
- if (settings.enable_clustering){
- settings.clusterSource.getSource().clear();
+ settings[map_id].dbFeatures.clear();
+ settings[map_id].vectors.clear();
+ if (settings[map_id].enable_clustering){
+ settings[map_id].clusterSource.getSource().clear();
}
if (!data.features) data.features = [];
if (data.zoom_need_reload){
- settings._zoom_need_reload = data.zoom_need_reload;
+ settings[map_id]._zoom_need_reload = data.zoom_need_reload;
}
- settings._revision += 1;
+ settings[map_id]._revision += 1;
for (var i = 0; i < data.features.length; i++) {
var feature = data.features[i];
if (feature.geometry.type == 'Point'){
- var iconFeature = methods.addMarker(feature);
+ var iconFeature = methods.addMarker(map_id, feature);
} else if (feature.geometry.type == 'Polygon') {
- methods.addPolygon(feature);
+ methods.addPolygon(map_id, feature);
} else if (feature.geometry.type == 'MultiPolygon') {
- methods.addPolygon(feature);
+ methods.addPolygon(map_id, feature);
} else if (feature.geometry.type == 'LineString') {
- methods.addRoute(feature);
+ methods.addRoute(map_id, feature);
} else if (feature.geometry.type == 'MultiLineString') {
//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();
+ // var extent = settings[map_id].sourceDbFeatures.getExtent();
+ // settings[map_id].map.getView().fit(extent, settings[map_id].map.getSize());
+ // settings[map_id].map.resetLayersZIndex();
// var end = new Date().getTime();
// var time = end - start;
//alert('Execution time: ' + time);
},
error: function (data, textStatus, errorThrown) {
- settings.dbFeatures.clear();
- settings.vectors.clear();
+ settings[map_id].dbFeatures.clear();
+ settings[map_id].vectors.clear();
/// OL3-TODO
- //settings.layerVectors.removeAllFeatures();
- //if (settings.enable_clustering){
- // settings.layerCluster.removeAllFeatures();
+ //settings[map_id].layerVectors.removeAllFeatures();
+ //if (settings[map_id].enable_clustering){
+ // settings[map_id].layerCluster.removeAllFeatures();
//}
},
complete: function () {
if($('#waiting').length){$('#waiting').hide();}
- methods.update_permalink_activation();
+ methods.update_permalink_activation(map_id);
}
});
},
razMap: function() {
methods.hidePopup();
methods.uncheckCategories();
- settings.dbFeatures.clear();
- settings.vectors.clear();
- if (settings.enable_clustering){
- settings.clusterSource.getSource().clear();
+ settings[map_id].dbFeatures.clear();
+ settings[map_id].vectors.clear();
+ if (settings[map_id].enable_clustering){
+ settings[map_id].clusterSource.getSource().clear();
}
},
/*
* Update the categories div in ajax
*/
- loadCategories: function (helper) {
- var current_extent = settings.view.calculateExtent(
- settings.map.getSize());
+ loadCategories: function (map_id, helper) {
+ var current_extent = settings[map_id].view.calculateExtent(
+ settings[map_id].map.getSize());
current_extent = ol.proj.transformExtent(
current_extent,
EPSG_PROJECTION,
@@ -1611,22 +1657,22 @@ function transformCoordToLonLat(coord) {
current_extent = current_extent.replace(/\./g, 'D');
current_extent = current_extent.replace(/-/g, 'M');
var uri = extra_url
- if (settings.area_id) uri += settings.area_id + "/";
+ if (settings[map_id].area_id) uri += settings[map_id].area_id + "/";
uri += "getAvailableCategories/";
var params = {"current_extent": current_extent}
- if (settings.display_submited) params["status"] = "A_S";
+ if (settings[map_id].display_submited) params["status"] = "A_S";
$.ajax({url: uri,
data: params,
cache: false,
success: function (data) {
$('#categories').empty();
$('#categories').html(data);
- _init_categories();
- _reCheckCategories();
- if (settings.current_category) {
+ _init_categories(map_id);
+ _reCheckCategories(map_id);
+ if (settings[map_id].current_category) {
// TODO : add a force mode
// (in case the category is yet visible in HTML...)
- methods.toggle_category();
+ methods.toggle_category(map_id);
}
if (helper) helper();
}
@@ -1672,15 +1718,15 @@ function transformCoordToLonLat(coord) {
});
return master_check;
};
- var _init_categories = function () {
+ var _init_categories = function (map_id) {
/*
* Add event listener in categories DOM elements
*/
$('#categories #ul_categories > li > input').bind("click",
function (e) {
- methods.hidePopup(e);
+ methods._hidePopup(map_id, e);
_toggle_subcategories($(this));
- methods.loadGeoObjects();
+ methods.loadGeoObjects(map_id);
});
$('.subcategories li input').bind("click", function (e) {
$('#search-result').html('');
@@ -1695,13 +1741,13 @@ function transformCoordToLonLat(coord) {
} else {
par.removeClass('selected');
}
- if (!settings.suspend_load) methods.loadGeoObjects();
+ if (!settings[map_id].suspend_load) methods.loadGeoObjects(map_id);
_toggle_categories($(this));
if ($('#layer_cat_'+c_name).length){
$('#layer_cat_'+c_name).prop("checked",
this.checked);
}
- methods.hidePopup(e);
+ methods._hidePopup(map_id, e);
});
$(".main-category-tick").bind("click", function(event){
event.stopPropagation();
@@ -1709,56 +1755,56 @@ function transformCoordToLonLat(coord) {
var main_item = $(this).parent().parent().parent();
if (main_item.hasClass('full')){
main_item.removeClass('full');
- methods.uncheck_category(category_id);
+ methods.uncheck_category(map_id, category_id);
} else {
main_item.addClass('full');
- methods.check_category(category_id);
+ methods.check_category(map_id, category_id);
}
});
$('#display_submited_check').bind("click", function () {
- methods.loadGeoObjects();
+ methods.loadGeoObjects(map_id);
});
// Zoom to category
$(".zoom_to_category").bind("click", function (e) {
var id = this.id.substr(this.id.lastIndexOf("_")+1);
- helpers.zoom_to_category(id);
+ helpers.zoom_to_category(map_id, id);
});
$(".zoom_to_subcategory").bind("click", function (e) {
var id = this.id.substr(this.id.lastIndexOf("_")+1);
- helpers.zoom_to_subcategories([id]);
+ helpers.zoom_to_subcategories(map_id, [id]);
});
$(".toggle_category").parent().bind("click", function (e) {
var item = $(this).children('.toggle_category');
var id = item.attr('id').substr(item.attr('id').lastIndexOf("_")+1);
- methods.toggle_category(id);
+ methods.toggle_category(map_id, id);
});
}
- var _reCheckCategories = function (){
+ var _reCheckCategories = function (map_id){
/* recheck categories on init or when a redraw occurs */
- if (!settings.checked_categories){
+ if (!settings[map_id].checked_categories){
return;
}
$('#frm_categories .subcategories input:checkbox').each(function(index){
cat_id = $(this).attr('id').split('_').pop();
- if (settings.checked_categories.indexOf(parseInt(cat_id)) != -1) {
+ if (settings[map_id].checked_categories.indexOf(parseInt(cat_id)) != -1) {
$(this).parent().addClass('selected');
$(this).attr("checked", "checked");
_toggle_categories($(this));
- methods.toggle_category();
+ methods.toggle_category(map_id);
} else {
$(this).attr("checked", false);
}
});
- if (settings.display_submited == true){
+ if (settings[map_id].display_submited == true){
$('#display_submited_check').attr("checked", "checked");
}
}
},
- check_category: function (cat_id) {
+ check_category: function (map_id, cat_id) {
/*
* Check all subcategory of a category
*/
- settings.suspend_load = true;
+ settings[map_id].suspend_load = true;
$('#maincategory_' + cat_id + '.subcategories li input').each(
function(){
if(!$(this).is(':checked')){
@@ -1769,14 +1815,14 @@ function transformCoordToLonLat(coord) {
}
}
);
- settings.suspend_load = false;
- methods.loadGeoObjects();
+ settings[map_id].suspend_load = false;
+ methods.loadGeoObjects(map_id);
},
- uncheck_category: function (cat_id) {
+ uncheck_category: function (map_id, cat_id) {
/*
* Uncheck all subcategory of a category
*/
- settings.suspend_load = true;
+ settings[map_id].suspend_load = true;
$('#maincategory_' + cat_id + '.subcategories li input').each(
function(){
if($(this).is(':checked')){
@@ -1786,14 +1832,14 @@ function transformCoordToLonLat(coord) {
}
}
);
- settings.suspend_load = false;
- methods.loadGeoObjects();
+ settings[map_id].suspend_load = false;
+ methods.loadGeoObjects(map_id);
},
check_subcategories: function (cat_ids) {
/*
* Check subcategory list
*/
- settings.suspend_load = true;
+ settings[map_id].suspend_load = true;
for (idx in cat_ids){
$('#category_' + cat_ids[idx]).each(
function(){
@@ -1803,8 +1849,8 @@ function transformCoordToLonLat(coord) {
}
);
}
- settings.suspend_load = false;
- methods.loadGeoObjects();
+ settings[map_id].suspend_load = false;
+ methods.loadGeoObjects(map_id);
},
/*
*
@@ -1822,57 +1868,72 @@ function transformCoordToLonLat(coord) {
* Hide clusterized markers
*/
cleanCluster: function (){
- if (settings.map.getZoom() === 18) {
+ if (settings[map_id].map.getZoom() === 18) {
// Don't cluster at this level. No matter what.
- settings.clustering.threshold = 1000;
+ settings[map_id].clustering.threshold = 1000;
} else {
- settings.clustering.threshold = 2;
+ settings[map_id].clustering.threshold = 2;
}
- //settings.layerCluster.refresh({force:true});
- settings.clustering.recluster();
+ //settings[map_id].layerCluster.refresh({force:true});
+ settings[map_id].clustering.recluster();
var hidden_feature_idx = [];
- if (settings.map.getZoom() != 18) {
- for(var idx=0; idx<settings.layerCluster.features.length; idx++){
- if(settings.layerCluster.features[idx].cluster){
- for(var c=0;c < settings.layerCluster.features[idx].cluster.length; c++) {
+ if (settings[map_id].map.getZoom() != 18) {
+ for(var idx=0; idx<settings[map_id].layerCluster.features.length; idx++){
+ if(settings[map_id].layerCluster.features[idx].cluster){
+ for(var c=0;c < settings[map_id].layerCluster.features[idx].cluster.length; c++) {
hidden_feature_idx.push(
- settings.layerCluster.features[idx].cluster[c].attributes.pk);
+ settings[map_id].layerCluster.features[idx].cluster[c].attributes.pk);
}
}
}
}
- for(j=0; j<settings.layerDbFeatures.markers.length;j++){
- if(hidden_feature_idx.indexOf(settings.layerDbFeatures.markers[j].pk) > -1){
- settings.layerDbFeatures.markers[j].display(false);
+ for(j=0; j<settings[map_id].layerDbFeatures.markers.length;j++){
+ if(hidden_feature_idx.indexOf(settings[map_id].layerDbFeatures.markers[j].pk) > -1){
+ settings[map_id].layerDbFeatures.markers[j].display(false);
} else {
- settings.layerDbFeatures.markers[j].display(true);
+ settings[map_id].layerDbFeatures.markers[j].display(true);
}
}
},
activateDraw: function (){
- settings.map.addInteraction(settings.draw);
- settings.map.addInteraction(settings.modify);
- settings.draw_activated = true;
- settings.modify_activated = true;
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ settings[map_id].map.addInteraction(settings[map_id].draw);
+ settings[map_id].map.addInteraction(settings[map_id].modify);
+ settings[map_id].draw_activated = true;
+ settings[map_id].modify_activated = true;
},
activateModify: function (){
- settings.map.addInteraction(settings.modify);
- settings.modify_activated = true;
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ settings[map_id].map.addInteraction(settings[map_id].modify);
+ settings[map_id].modify_activated = true;
},
deactivateDraw: function (){
- if (settings.draw_activated){
- settings.map.removeInteraction(settings.draw);
- settings.draw_activated = false;
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ if (settings[map_id].draw_activated){
+ settings[map_id].map.removeInteraction(settings[map_id].draw);
+ settings[map_id].draw_activated = false;
}
- if (settings.modify_activated){
- settings.map.removeInteraction(settings.modify);
- settings.modify_activated = false;
+ if (settings[map_id].modify_activated){
+ settings[map_id].map.removeInteraction(settings[map_id].modify);
+ settings[map_id].modify_activated = false;
}
},
- _getIconStyle: function(properties){
- for (var i in settings.iconStyles){
+ _getIconStyle: function(map_id, properties){
+ for (var i in settings[map_id].iconStyles){
if (i == properties.icon_path){
- return settings.iconStyles[i];
+ return settings[map_id].iconStyles[i];
}
}
if (!iconStyle){
@@ -1889,17 +1950,17 @@ function transformCoordToLonLat(coord) {
size: size
})
});
- settings.iconStyles[properties.icon_path] = iconStyle;
+ settings[map_id].iconStyles[properties.icon_path] = iconStyle;
return iconStyle;
}
},
/*
* Put a marker on the map
*/
- addMarker: function (mark) {
+ addMarker: function (map_id, mark) {
/*
* Default Feature configuration
- * This can be overrided in on_marker_click, using settings.current_feature
+ * This can be overrided in on_marker_click, using settings[map_id].current_feature
*/
var lat = mark.geometry.coordinates[1];
var lon = mark.geometry.coordinates[0];
@@ -1914,13 +1975,13 @@ function transformCoordToLonLat(coord) {
popup_offset_y: mark.properties.icon_popup_offset_y
});
- var iconStyle = methods._getIconStyle(mark.properties, MEDIA_URL);
+ var iconStyle = methods._getIconStyle(map_id, mark.properties, MEDIA_URL);
iconFeature.setStyle(iconStyle);
iconFeature.setId(mark.properties.key);
- settings.dbFeatures.push(iconFeature);
- if (settings.enable_clustering){
- settings.clusterSource.getSource().addFeature(iconFeature);
+ settings[map_id].dbFeatures.push(iconFeature);
+ if (settings[map_id].enable_clustering){
+ settings[map_id].clusterSource.getSource().addFeature(iconFeature);
}
return iconFeature;
@@ -1933,9 +1994,9 @@ function transformCoordToLonLat(coord) {
}
feature.pk = mark.properties.pk;
- feature.popupClass = settings.popupClass;
+ feature.popupClass = settings[map_id].popupClass;
feature.data.popupContentHTML = "<div class='cloud'>";
- if (!settings.popupContentFull) {
+ if (!settings[map_id].popupContentFull) {
feature.data.popupContentHTML += mark.properties.name;
}
feature.data.popupContentHTML += "</div>";
@@ -1952,19 +2013,19 @@ function transformCoordToLonLat(coord) {
return;
}
// show the popup
- if (settings.current_popup != null) {
- settings.current_popup.hide();
+ if (settings[map_id].current_popup != null) {
+ settings[map_id].current_popup.hide();
}
if (feature.popup == null) {
feature.popup = feature.createPopup();
- settings.map.addPopup(feature.popup);
+ settings[map_id].map.addPopup(feature.popup);
} else {
feature.popup.toggle();
}
- settings.current_popup = feature.popup;
+ settings[map_id].current_popup = feature.popup;
// hide on click on the cloud
- if (!settings.explicit_popup_hide){
- settings.current_popup.groupDiv.onclick = methods.hidePopup;
+ if (!settings[map_id].explicit_popup_hide){
+ settings[map_id].current_popup.groupDiv.onclick = methods.hidePopup;
}
methods.update_permalink_activation();
}
@@ -1975,15 +2036,15 @@ function transformCoordToLonLat(coord) {
// lack of better...
setTimeout(
function(){
- settings.current_popup.panIntoView();
+ settings[map_id].current_popup.panIntoView();
}, 1000);
}
var markerClick = function (evt) {
- settings.current_feature = feature;
+ settings[map_id].current_feature = feature;
methods.setCurrentPosition(feature.lonlat);
- if ( settings.on_marker_click ) {
- settings.on_marker_click(evt, mark, settings);
+ if ( settings[map_id].on_marker_click ) {
+ settings[map_id].on_marker_click(evt, mark, settings[map_id]);
}
else
{
@@ -1995,13 +2056,13 @@ function transformCoordToLonLat(coord) {
}
// Default popup
if (feature.popup && feature.popup.visible()) {
- if (settings.current_popup == feature.popup) {
+ if (settings[map_id].current_popup == feature.popup) {
feature.popup.hide();
- if (!settings.simple){
+ if (!settings[map_id].simple){
$('#detail').fadeOut();
}
} else {
- settings.current_popup.hide();
+ settings[map_id].current_popup.hide();
_popup();
methods.display_feature_detail(feature.pk);
_repan_popup();
@@ -2016,17 +2077,17 @@ function transformCoordToLonLat(coord) {
};
var markerOver = function (evt) {
document.body.style.cursor='pointer';
- if (settings.current_feature && settings.current_feature.popup
- && settings.current_feature.popup.visible()) return;
+ if (settings[map_id].current_feature && settings[map_id].current_feature.popup
+ && settings[map_id].current_feature.popup.visible()) return;
var marker = evt.object;
if (marker.icon_hover_url){
marker.setUrl(marker.icon_hover_url);
}
- px = settings.map.getPixelFromLonLat(marker.lonlat);
- marker_hover = $('#'+settings.marker_hover_id);
- marker_hover_content = $('#'+settings.marker_hover_content_id);
+ px = settings[map_id].map.getPixelFromLonLat(marker.lonlat);
+ marker_hover = $('#'+settings[map_id].marker_hover_id);
+ marker_hover_content = $('#'+settings[map_id].marker_hover_content_id);
marker_hover_content.html(marker.category_name);
- var map_position = $(settings.map.div).offset();
+ var map_position = $(settings[map_id].map.div).offset();
var width = marker_hover.width();
width += parseInt(marker_hover.css("padding-left"), 10)
@@ -2037,9 +2098,9 @@ function transformCoordToLonLat(coord) {
+ parseInt(marker_hover.css("borderRightWidth"), 10);
var pos_x = px.x + map_position.left
- width/2 + 1;
- if (settings.marker_hover_offset)
- pos_x += settings.marker_hover_offset.x;
- $('#'+settings.marker_hover_id).css('left', pos_x);
+ if (settings[map_id].marker_hover_offset)
+ pos_x += settings[map_id].marker_hover_offset.x;
+ $('#'+settings[map_id].marker_hover_id).css('left', pos_x);
var height = marker_hover.height();
height += parseInt(marker_hover.css("padding-top"), 10)
+ parseInt(marker_hover.css("padding-bottom"), 10)
@@ -2049,10 +2110,10 @@ function transformCoordToLonLat(coord) {
+ parseInt(marker_hover.css("borderTopWidth"), 10);
var pos_y = px.y + map_position.top
- height - marker.icon.size.h;
- if (settings.marker_hover_offset)
- pos_y += settings.marker_hover_offset.y;
- $('#'+settings.marker_hover_id).css('top', pos_y);
- $('#'+settings.marker_hover_id).show();
+ if (settings[map_id].marker_hover_offset)
+ pos_y += settings[map_id].marker_hover_offset.y;
+ $('#'+settings[map_id].marker_hover_id).css('top', pos_y);
+ $('#'+settings[map_id].marker_hover_id).show();
OpenLayers.Event.stop(evt);
};
var markerOut = function (evt) {
@@ -2061,28 +2122,28 @@ function transformCoordToLonLat(coord) {
if (marker.icon_hover_url){
marker.setUrl(marker.icon_url);
}
- $('#'+settings.marker_hover_id).hide();
+ $('#'+settings[map_id].marker_hover_id).hide();
OpenLayers.Event.stop(evt);
};
marker.events.register('click', feature, markerClick);
marker.events.register('touchstart', feature, markerClick);
marker.events.register('mouseover', feature, markerOver);
marker.events.register('mouseout', feature, markerOut);
- settings.layerDbFeatures.addMarker(marker);
+ settings[map_id].layerDbFeatures.addMarker(marker);
// show the item when designed in the permalink
- if (settings.display_feature == feature.pk){
- settings.current_feature = feature;
+ if (settings[map_id].display_feature == feature.pk){
+ settings[map_id].current_feature = feature;
_popup(feature);
methods.display_feature_detail(feature.pk);
- if (!settings.display_route){
- settings.map.setCenter(feature.lonlat, 16);
+ if (!settings[map_id].display_route){
+ settings[map_id].map.setCenter(feature.lonlat, 16);
_repan_popup();
}
- settings.display_feature = null;
+ settings[map_id].display_feature = null;
//methods.loadCategories();
}
- if (settings.enable_clustering){
+ if (settings[map_id].enable_clustering){
// manage cluster layer
var point = new OpenLayers.Geometry.Point(lon, lat).transform(
EPSG_DISPLAY_PROJECTION,
@@ -2091,7 +2152,7 @@ function transformCoordToLonLat(coord) {
feat.attributes = { icon: MEDIA_URL + mark.properties.icon_path,
name: mark.properties.name, label:"",
pk:mark.properties.pk, marker:marker};
- settings.cluster_array.push(feat);
+ settings[map_id].cluster_array.push(feat);
}
return feature;
@@ -2111,11 +2172,17 @@ function transformCoordToLonLat(coord) {
//fin lib ios
cleanRoute: function(){
- if (typeof settings.editionSource != 'undefined')
- settings.editionSource.clear();
+ if (typeof settings[map_id].editionSource != 'undefined')
+ settings[map_id].editionSource.clear();
},
// add json layer
addJSON: function(json_url, title, projection, style){
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+
if (typeof projection == 'undefined' || !projection)
projection = EPSG_DISPLAY_PROJECTION;
if (projection.substring(0, 5) != "EPSG:")
@@ -2130,10 +2197,10 @@ function transformCoordToLonLat(coord) {
style: style
});
- var current_layers = settings.map.getLayers();
+ var current_layers = settings[map_id].map.getLayers();
index = 0;
// insert just after the base layers
- $.each(settings.map.getLayers().getArray(), function(i, layer){
+ $.each(settings[map_id].map.getLayers().getArray(), function(i, layer){
if (layer.getProperties().type != 'base' && i != 0 &&
index == 0){
index = i;
@@ -2167,7 +2234,7 @@ function transformCoordToLonLat(coord) {
});
var jsonStyleMap = new OpenLayers.StyleMap({'default': jsonStyle});
- settings.layerJson = new OpenLayers.Layer.Vector("GeoJSON", {
+ settings[map_id].layerJson = new OpenLayers.Layer.Vector("GeoJSON", {
projection: EPSG_DISPLAY_PROJECTION,
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
@@ -2176,13 +2243,13 @@ function transformCoordToLonLat(coord) {
}),
styleMap: jsonStyleMap
});
- settings.map.addLayer(settings.layerJson);
- settings.map.setLayerIndex(settings.layerJson, 0);
- settings.layerJson.setOpacity(0.4);
+ settings[map_id].map.addLayer(settings[map_id].layerJson);
+ settings[map_id].map.setLayerIndex(settings[map_id].layerJson, 0);
+ settings[map_id].layerJson.setOpacity(0.4);
*/
},
// Put a route on the map
- addRoute: function(feature) {
+ addRoute: function(map_id, feature) {
var feat = new ol.format.GeoJSON().readFeatures(feature)[0];
feat.setGeometry(transform(feat.getGeometry()));
feat.setStyle(new ol.style.Style({
@@ -2190,7 +2257,7 @@ function transformCoordToLonLat(coord) {
color: feature.properties.color, width: 2
})
}));
- settings.dbFeatures.push(feat);
+ settings[map_id].dbFeatures.push(feat);
return;
/*
var polyline = route.geometry;
@@ -2201,18 +2268,18 @@ function transformCoordToLonLat(coord) {
point_array.push(point);
}
var linestring = new OpenLayers.Geometry.LineString(point_array);
- linestring.transform(EPSG_DISPLAY_PROJECTION, settings.map.getProjectionObject());
- settings.current_feature = new OpenLayers.Feature.Vector();
+ linestring.transform(EPSG_DISPLAY_PROJECTION, settings[map_id].map.getProjectionObject());
+ settings[map_id].current_feature = new OpenLayers.Feature.Vector();
var style = OpenLayers.Util.extend({},
OpenLayers.Feature.Vector.style['default']);
style.strokeColor = route.properties.color;
style.strokeWidth = 3;
- settings.current_feature.style = style;
- settings.current_feature.geometry = linestring;
- settings.layerVectors.addFeatures([settings.current_feature]);
- if (settings.display_route && settings.display_route == route.properties.pk){
- var dataExtent = settings.current_feature.geometry.getBounds();
+ settings[map_id].current_feature.style = style;
+ settings[map_id].current_feature.geometry = linestring;
+ settings[map_id].layerVectors.addFeatures([settings[map_id].current_feature]);
+ if (settings[map_id].display_route && settings[map_id].display_route == route.properties.pk){
+ var dataExtent = settings[map_id].current_feature.geometry.getBounds();
map.zoomToExtent(dataExtent, closest=true);
methods.loadCategories();
}
@@ -2231,11 +2298,11 @@ function transformCoordToLonLat(coord) {
feats[0].style = style;
feats[0].geometry = feats[0].geometry.transform(
EPSG_DISPLAY_PROJECTION,
- settings.map.getProjectionObject());
- settings.layerVectors.addFeatures(feats);
+ settings[map_id].map.getProjectionObject());
+ settings[map_id].layerVectors.addFeatures(feats);
},
// Put a polygon on the map
- addPolygon: function(feature) {
+ addPolygon: function(map_id, feature) {
var feat = new ol.format.GeoJSON().readFeatures(feature)[0];
feat.setGeometry(transform(feat.getGeometry()));
feat.setStyle(new ol.style.Style({
@@ -2244,7 +2311,7 @@ function transformCoordToLonLat(coord) {
color: feature.properties.color, width: 2
})
}));
- settings.dbFeatures.push(feat);
+ settings[map_id].dbFeatures.push(feat);
return;
/*
var gformat = new OpenLayers.Format.GeoJSON();
@@ -2256,8 +2323,8 @@ function transformCoordToLonLat(coord) {
feats[0].style = style;
feats[0].geometry = feats[0].geometry.transform(
EPSG_DISPLAY_PROJECTION,
- settings.map.getProjectionObject());
- settings.layerVectors.addFeatures(feats);
+ settings[map_id].map.getProjectionObject());
+ settings[map_id].layerVectors.addFeatures(feats);
*/
},
routingInputChange: function(nominatim_id){
@@ -2278,35 +2345,35 @@ function transformCoordToLonLat(coord) {
methods.routingAddStep(geom, false);
break;
}
- if (settings.routing_end && settings.routing_start
+ if (settings[map_id].routing_end && settings[map_id].routing_start
&& $('#search_routing').length) {
$('#search_routing').button('enable');
}
},
redrawRoutingIcons: function(){
- settings.routingFeatures.clear();
- settings.routingFeatures.push(settings.routing_start);
- settings.routingFeatures.push(settings.routing_end);
- for (var k=0;k<settings.routing_steps.length;k++){
- settings.routingFeatures.push(settings.routing_steps[k]);
+ settings[map_id].routingFeatures.clear();
+ settings[map_id].routingFeatures.push(settings[map_id].routing_start);
+ settings[map_id].routingFeatures.push(settings[map_id].routing_end);
+ for (var k=0;k<settings[map_id].routing_steps.length;k++){
+ settings[map_id].routingFeatures.push(settings[map_id].routing_steps[k]);
}
},
// set the start point for routing
routingFrom: function(obj, auto){
$('#chimere_map_menu').hide();
- if (!settings.mobile){
- settings.routing_panel_open();
+ if (!settings[map_id].mobile){
+ settings[map_id].routing_panel_open();
$('.map_menu_clear').show();
}
- if (settings.routing_start){
- settings.sourceRoutingFeatures.removeFeature(settings.routing_start);
+ if (settings[map_id].routing_start){
+ settings[map_id].sourceRoutingFeatures.removeFeature(settings[map_id].routing_start);
}
var coordinates;
if (typeof obj == 'undefined') {
- coordinates = settings.popup.getPosition();
+ coordinates = settings[map_id].popup.getPosition();
} else {
if (typeof obj.coordinate != 'undefined') {
coordinates = obj.coordinate;
@@ -2316,11 +2383,11 @@ function transformCoordToLonLat(coord) {
}
if (typeof coordinates == 'undefined') return;
- settings.routing_start = new ol.Feature({
+ settings[map_id].routing_start = new ol.Feature({
geometry: new ol.geom.Point(coordinates)
});
- if (!settings.icon_start_style){
- settings.icon_start_style = new ol.style.Style({
+ if (!settings[map_id].icon_start_style){
+ settings[map_id].icon_start_style = new ol.style.Style({
image: new ol.style.Icon({
anchor: [18, 36],
anchorXUnits: 'pixels',
@@ -2330,15 +2397,15 @@ function transformCoordToLonLat(coord) {
})
});
}
- settings.routing_start.setStyle(settings.icon_start_style);
- settings.routingFeatures.push(settings.routing_start);
+ settings[map_id].routing_start.setStyle(settings[map_id].icon_start_style);
+ settings[map_id].routingFeatures.push(settings[map_id].routing_start);
if (nominatim_url){
helpers.updateNominatimName(
transformCoordToLonLat(coordinates),
'start_label');
}
- if (settings.routing_end && auto) methods.route();
+ if (settings[map_id].routing_end && auto) methods.route();
// Added for mobile - START //
//iOS
methods.connectWebViewJavascriptBridge(
@@ -2360,18 +2427,18 @@ function transformCoordToLonLat(coord) {
// set the start point for current Position
routingFromMyPosition: function(options){
$('#chimere_map_menu').hide();
- settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]);
- settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION,
- settings.map.getProjectionObject());
- settings.routing_start = new OpenLayers.Marker(
- settings.current_position.clone(),
- settings.icon_start);
- settings.layerRouteMarker.addMarker(settings.routing_start);
+ settings[map_id].current_position = new OpenLayers.LonLat(options["lon"], options["lat"]);
+ settings[map_id].current_position = settings[map_id].current_position.transform(EPSG_DISPLAY_PROJECTION,
+ settings[map_id].map.getProjectionObject());
+ settings[map_id].routing_start = new OpenLayers.Marker(
+ settings[map_id].current_position.clone(),
+ settings[map_id].icon_start);
+ settings[map_id].layerRouteMarker.addMarker(settings[map_id].routing_start);
if (nominatim_url){
helpers.updateNominatimName(
transform(obj).coordinate,'start_label');
}
- if (settings.routing_end) methods.route();
+ if (settings[map_id].routing_end) methods.route();
// Added for mobile - START //
//iOS
@@ -2393,31 +2460,31 @@ function transformCoordToLonLat(coord) {
updateMyCurrentPosition: function(options){
- if (settings.current_position_marker) {
- settings.layerMarkers.removeMarker(settings.current_position_marker)
+ if (settings[map_id].current_position_marker) {
+ settings[map_id].layerMarkers.removeMarker(settings[map_id].current_position_marker)
}
var tmp_position = new OpenLayers.LonLat(options["lon"], options["lat"]);
tmp_position = tmp_position.transform(EPSG_DISPLAY_PROJECTION,
- settings.map.getProjectionObject());
- settings.current_position_marker = new OpenLayers.Marker(
+ settings[map_id].map.getProjectionObject());
+ settings[map_id].current_position_marker = new OpenLayers.Marker(
tmp_position.clone(),
- settings.icon_current_position);
- settings.layerRouteMarker.addMarker(settings.current_position_marker);
+ settings[map_id].icon_current_position);
+ settings[map_id].layerRouteMarker.addMarker(settings[map_id].current_position_marker);
},
// Added for mobile - END //
// add a step point for routing
routingAddStep: function(obj, auto){
- if (!settings.mobile){
- settings.routing_panel_open();
+ if (!settings[map_id].mobile){
+ settings[map_id].routing_panel_open();
$('.map_menu_clear').show();
}
var coordinates;
if (typeof obj == 'undefined') {
- coordinates = settings.popup.getPosition();
+ coordinates = settings[map_id].popup.getPosition();
} else {
if (typeof obj.coordinate != 'undefined') {
coordinates = obj.coordinate;
@@ -2430,8 +2497,8 @@ function transformCoordToLonLat(coord) {
var feat = new ol.Feature({
geometry: new ol.geom.Point(coordinates)
});
- if (!settings.icon_step_style){
- settings.icon_step_style = new ol.style.Style({
+ if (!settings[map_id].icon_step_style){
+ settings[map_id].icon_step_style = new ol.style.Style({
image: new ol.style.Icon({
anchor: [18, 36],
anchorXUnits: 'pixels',
@@ -2441,9 +2508,9 @@ function transformCoordToLonLat(coord) {
})
});
}
- feat.setStyle(settings.icon_step_style);
- settings.routing_steps.push(feat);
- settings.routingFeatures.push(feat);
+ feat.setStyle(settings[map_id].icon_step_style);
+ settings[map_id].routing_steps.push(feat);
+ settings[map_id].routingFeatures.push(feat);
if (nominatim_url){
var current_itinerary_number = methods.add_step_fx();
@@ -2451,21 +2518,21 @@ function transformCoordToLonLat(coord) {
transformCoordToLonLat(coordinates),
'step_'+current_itinerary_number+'_label');
}
- if (settings.routing_end && settings.routing_start && auto) methods.route();
+ if (settings[map_id].routing_end && settings[map_id].routing_start && auto) methods.route();
},
// change routing speed
routingChangeSpeed: function(speed){
- settings.routing_speed = speed;
+ settings[map_id].routing_speed = speed;
},
// change routing transport
routingChangeTransport: function(transport){
- settings.routing_transport = transport;
+ settings[map_id].routing_transport = transport;
},
// add a step on the interface
add_step_fx: function (){
- settings.itinerary_step_number += 1;
+ settings[map_id].itinerary_step_number += 1;
var cloned = $("#id_start_div").clone();
- var c_id = 'step_' + settings.itinerary_step_number;
+ var c_id = 'step_' + settings[map_id].itinerary_step_number;
cloned.attr('id', 'id_'+c_id+'_div');
cloned.children('label').html(step_label).addClass('step_label');
cloned.children("#nominatim_start_label").attr('id', c_id+'_label'
@@ -2479,10 +2546,10 @@ function transformCoordToLonLat(coord) {
cloned.children("#nominatim_start"+suffix).attr('id', val
).attr('name', val);
}
- if (settings.itinerary_step_number == 1){
+ if (settings[map_id].itinerary_step_number == 1){
$("#nominatim_end_label").after(cloned);
} else {
- $("#step_"+(settings.itinerary_step_number-1)+"_label"
+ $("#step_"+(settings[map_id].itinerary_step_number-1)+"_label"
).after(cloned);
}
$('#' + c_id).val(default_nominatim_lbl);
@@ -2490,23 +2557,23 @@ function transformCoordToLonLat(coord) {
$('#'+c_id).val('');
});
$(".nominatim-widget").autocomplete(nominatim_widget_options);
- return settings.itinerary_step_number;
+ return settings[map_id].itinerary_step_number;
},
// set the finish point for routing
routingTo: function(obj, auto){
- if (!settings.mobile){
- settings.routing_panel_open();
+ if (!settings[map_id].mobile){
+ settings[map_id].routing_panel_open();
$('.map_menu_clear').show();
}
- if (settings.routing_end){
- settings.sourceRoutingFeatures.removeFeature(settings.routing_end);
+ if (settings[map_id].routing_end){
+ settings[map_id].sourceRoutingFeatures.removeFeature(settings[map_id].routing_end);
}
var coordinates;
if (typeof obj == 'undefined') {
- coordinates = settings.popup.getPosition();
+ coordinates = settings[map_id].popup.getPosition();
} else {
if (typeof obj.coordinate != 'undefined') {
coordinates = obj.coordinate;
@@ -2516,11 +2583,11 @@ function transformCoordToLonLat(coord) {
}
if (typeof coordinates == 'undefined') return;
- settings.routing_end = new ol.Feature({
+ settings[map_id].routing_end = new ol.Feature({
geometry: new ol.geom.Point(coordinates)
});
- if (!settings.icon_end_style){
- settings.icon_end_style = new ol.style.Style({
+ if (!settings[map_id].icon_end_style){
+ settings[map_id].icon_end_style = new ol.style.Style({
image: new ol.style.Icon({
anchor: [18, 36],
anchorXUnits: 'pixels',
@@ -2530,8 +2597,8 @@ function transformCoordToLonLat(coord) {
})
});
}
- settings.routing_end.setStyle(settings.icon_end_style);
- settings.routingFeatures.push(settings.routing_end);
+ settings[map_id].routing_end.setStyle(settings[map_id].icon_end_style);
+ settings[map_id].routingFeatures.push(settings[map_id].routing_end);
if (nominatim_url){
helpers.updateNominatimName(
@@ -2539,7 +2606,7 @@ function transformCoordToLonLat(coord) {
'end_label');
}
- if (settings.routing_start && auto) methods.route();
+ if (settings[map_id].routing_start && auto) methods.route();
// Added for mobile - START //
// iOS
@@ -2564,24 +2631,24 @@ function transformCoordToLonLat(coord) {
// set the finish point for current Position
routingToPosition: function(options){
$('#chimere_map_menu').hide();
- if (!settings.mobile){
- settings.routing_panel_open();
+ if (!settings[map_id].mobile){
+ settings[map_id].routing_panel_open();
$('#map_menu_clear').show();
}
- settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]);
- settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION,
- settings.map.getProjectionObject());
- settings.routing_end = new OpenLayers.Marker(
- settings.current_position.clone(),
- settings.icon_end);
- settings.layerRouteMarker.addMarker(settings.routing_end);
+ settings[map_id].current_position = new OpenLayers.LonLat(options["lon"], options["lat"]);
+ settings[map_id].current_position = settings[map_id].current_position.transform(EPSG_DISPLAY_PROJECTION,
+ settings[map_id].map.getProjectionObject());
+ settings[map_id].routing_end = new OpenLayers.Marker(
+ settings[map_id].current_position.clone(),
+ settings[map_id].icon_end);
+ settings[map_id].layerRouteMarker.addMarker(settings[map_id].routing_end);
if (nominatim_url){
- helpers.updateNominatimName(settings.current_position.clone()
- .transform(settings.map.getProjectionObject(),
+ helpers.updateNominatimName(settings[map_id].current_position.clone()
+ .transform(settings[map_id].map.getProjectionObject(),
EPSG_DISPLAY_PROJECTION),
'end_label');
}
- if (settings.routing_start) methods.route();
+ if (settings[map_id].routing_start) methods.route();
// Added for mobile - START //
//iOS
methods.connectWebViewJavascriptBridge(
@@ -2616,39 +2683,39 @@ function transformCoordToLonLat(coord) {
$('#chimere_itinerary_form').show();
$('div[id^="id_step_"]').remove();
if($('#search_routing').length) $('#search_routing').button('disable');
- settings.routing_start = null;
- settings.routing_end = null;
- settings.routing_steps = new Array();
- settings.current_itinerary_number = 0;
- settings.current_routes_features = [];
- settings.routingFeatures.clear();
+ settings[map_id].routing_start = null;
+ settings[map_id].routing_end = null;
+ settings[map_id].routing_steps = new Array();
+ settings[map_id].current_itinerary_number = 0;
+ settings[map_id].current_routes_features = [];
+ settings[map_id].routingFeatures.clear();
},
// display a route
route: function(){
if($('#search_routing').length) $('#search_routing').button('enable');
- if (!settings.routing_start || !settings.routing_end){
+ if (!settings[map_id].routing_start || !settings[map_id].routing_end){
return;
}
var steps = [
transformCoordToLonLat(
- settings.routing_start.getGeometry().getCoordinates())];
- for (var i = 0; i < settings.routing_steps.length; i++) {
+ settings[map_id].routing_start.getGeometry().getCoordinates())];
+ for (var i = 0; i < settings[map_id].routing_steps.length; i++) {
steps.push(
transformCoordToLonLat(
- settings.routing_steps[i].getGeometry().getCoordinates()
+ settings[map_id].routing_steps[i].getGeometry().getCoordinates()
)
);
}
steps.push(
transformCoordToLonLat(
- settings.routing_end.getGeometry().getCoordinates()));
+ settings[map_id].routing_end.getGeometry().getCoordinates()));
// create the appropriate URL
var uri = extra_url + "route/"
- if(settings.routing_transport){
- uri += settings.routing_transport + "/"
+ if(settings[map_id].routing_transport){
+ uri += settings[map_id].routing_transport + "/"
}
- if(settings.routing_speed){
- uri += settings.routing_speed + "/"
+ if(settings[map_id].routing_speed){
+ uri += settings[map_id].routing_speed + "/"
}
for (var i = 0; i < steps.length; i++) {
var step = steps[i];
@@ -2666,11 +2733,11 @@ function transformCoordToLonLat(coord) {
methods.displayMessage(routing_fail_message);
return;
}
- settings.current_routes_features = [];
+ settings[map_id].current_routes_features = [];
for (var i = 0; i < data.features.length; i++) {
var feat = data.features[i];
if(feat.geometry.type == 'LineString'){
- settings.current_routes_features.push(
+ settings[map_id].current_routes_features.push(
methods.putRouting(feat));
} else {
var point = new ol.geom.Point([
@@ -2696,18 +2763,18 @@ function transformCoordToLonLat(coord) {
})
);
- settings.routingFeatures.push(feature);
+ settings[map_id].routingFeatures.push(feature);
}
}
if (data.message) methods.displayMessage(data.message);
- var v = settings.map.getView();
+ var v = settings[map_id].map.getView();
methods._set_animation();
options = {};
if ($("#panel").is(":visible")){
options = {"padding": [0, 0, 0, $("#panel").width()]};
}
- v.fit(settings.sourceRoutingFeatures.getExtent(),
- settings.map.getSize(), options);
+ v.fit(settings[map_id].sourceRoutingFeatures.getExtent(),
+ settings[map_id].map.getSize(), options);
$('#id_transport_it').find('span'
).removeClass('selected');
$('#id_transport_it_'+data.properties.transport
@@ -2719,13 +2786,13 @@ function transformCoordToLonLat(coord) {
$('#chimere_itinerary').show();
/*
TODO
- if(settings.edition_type_is_route){
+ if(settings[map_id].edition_type_is_route){
methods.updateRoutingInput();
} else {
*/
- if (!settings.mobile){
+ if (!settings[map_id].mobile){
$('#chimere_itinerary_form').hide();
- settings.routing_panel_open();
+ settings[map_id].routing_panel_open();
}
// }
// Added for mobile - START //
@@ -2778,7 +2845,7 @@ function transformCoordToLonLat(coord) {
lineDash: [.9, 10]
})})
]);
- settings.routingFeatures.push(feat);
+ settings[map_id].routingFeatures.push(feat);
return feat;
/*
@@ -2789,47 +2856,47 @@ function transformCoordToLonLat(coord) {
point_array.push(point);
}
var linestring = new OpenLayers.Geometry.LineString(point_array);
- linestring.transform(EPSG_DISPLAY_PROJECTION, settings.map.getProjectionObject());
+ linestring.transform(EPSG_DISPLAY_PROJECTION, settings[map_id].map.getProjectionObject());
current_route = new OpenLayers.Feature.Vector();
var style = OpenLayers.Util.extend({},
OpenLayers.Feature.Vector.style['default']);
style.strokeWidth = 3;
current_route.style = style;
current_route.geometry = linestring;
- settings.layerRoute.addFeatures([current_route]);
+ settings[map_id].layerRoute.addFeatures([current_route]);
*/
},
- display_feature_detail: function (key, name) {
+ display_feature_detail: function (map_id, key, name) {
/*
* update current detail panel with an AJAX request
*/
if (key == undefined){
- if (!settings.popupContentFull) {
+ if (!settings[map_id].popupContentFull) {
$('#detail').fadeOut();
} else {
- methods.hidePopup();
+ methods._hidePopup(map_id);
}
return;
}
var uri = extra_url
- if (settings.area_id) uri += settings.area_id + "/"
+ if (settings[map_id].area_id) uri += settings[map_id].area_id + "/"
uri += "getDetail/";
- if (settings.popupContentFull){
+ if (settings[map_id].popupContentFull){
// only display when fully loaded
$(".popover").addClass('transparent');
uri += "popup/";
}
uri += key;
var params = {}
- if (settings.simple) { params["simple"] = 1; }
+ if (settings[map_id].simple) { params["simple"] = 1; }
$.ajax({url: uri,
data: params,
dataType: "html",
success: function (data) {
- if (!settings.popupContentFull) {
+ if (!settings[map_id].popupContentFull) {
$('#detail').html(data).fadeIn();
- if (settings.display_feature_detail_callback){
- settings.display_feature_detail_callback(settings);
+ if (settings[map_id].display_feature_detail_callback){
+ settings[map_id].display_feature_detail_callback(settings[map_id]);
}
}
else {
@@ -2842,40 +2909,40 @@ function transformCoordToLonLat(coord) {
$(".popover-title").show();
$(".popover-content").html(data);
- if (settings.display_feature_detail_callback){
- settings.display_feature_detail_callback(settings);
+ if (settings[map_id].display_feature_detail_callback){
+ settings[map_id].display_feature_detail_callback(settings[map_id]);
}
- var offset = settings.popup.getOffset();
+ var offset = settings[map_id].popup.getOffset();
offset[0] = offset[0] - $('.popover').width()/2 + w/2;
offset[1] = offset[1] - $('.popover').height() + h;
- settings.popup.setOffset(offset);
- settings.popup.dispatchEvent('change:offset');
+ settings[map_id].popup.setOffset(offset);
+ settings[map_id].popup.dispatchEvent('change:offset');
// pan toward the popup + margin to display pop height
- var center_position = settings.popup.getPosition();
+ var center_position = settings[map_id].popup.getPosition();
var doc_height = $(document).height();
if (doc_height / 2 < - offset[1]*2){
- var pixel = settings.map.getPixelFromCoordinate(center_position);
+ var pixel = settings[map_id].map.getPixelFromCoordinate(center_position);
pixel[1] += offset[1] + doc_height / 4;
- center_position = settings.map.getCoordinateFromPixel(pixel);
+ center_position = settings[map_id].map.getCoordinateFromPixel(pixel);
}
- methods._set_animation();
+ methods._set_animation(map_id);
if ($("#panel").is(":visible")){
var delta_x = $("#panel").width() / 2;
- settings.view.centerOn(
+ settings[map_id].view.centerOn(
center_position,
[0, 0],
[delta_x, 0]);
} else {
- settings.view.setCenter(center_position);
+ settings[map_id].view.setCenter(center_position);
}
// waiting for the pan to finish
setTimeout(function(){
// to trigger autopan
- settings.popup.dispatchEvent('change:position');
+ settings[map_id].popup.dispatchEvent('change:position');
$(".popover").removeClass('transparent');
- methods._register_popuphovering();
- }, settings.animation_duration + 10
+ methods._register_popuphovering(map_id);
+ }, settings[map_id].animation_duration + 10
);
}
}
@@ -2891,24 +2958,31 @@ function transformCoordToLonLat(coord) {
$('#modal-chimere-message').modal("show");
},
center_on_feature: function(feature) {
- var f = get_or_set(feature, settings.current_feature);
+ var f = get_or_set(feature, settings[map_id].current_feature);
if (f)
{
- settings.map.setCenter(f.lonlat);
+ settings[map_id].map.setCenter(f.lonlat);
}
},
zoom: function (options) {
+
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+
if ($.hasattr("category", options)) {
- helpers.zoom_to_category(options["category"]);
+ helpers.zoom_to_category(map_id, options["category"]);
} else if ($.hasattr("subcategories", options)) {
- helpers.zoom_to_subcategories(options["subcategories"]);
+ helpers.zoom_to_subcategories(map_id, options["subcategories"]);
} else if ($.hasattr("area", options)) {
- helpers.zoom_to_area(options["area"]);
+ helpers.zoom_to_area(map_id, options["area"]);
}
},
open_dialog: function(title, content){
- if(settings.open_dialog_fx){
- settings.open_dialog_fx(title, content);
+ if(settings[map_id].open_dialog_fx){
+ settings[map_id].open_dialog_fx(title, content);
} else {
$('#category_description .modal-body').html(message);
$('#category_description .modal-title').html(title);
@@ -2942,14 +3016,14 @@ function transformCoordToLonLat(coord) {
}
});
},
- toggle_category: function (id) {
+ toggle_category: function (map_id, id) {
// TODO make this id DOM element customisable
// Check if element is currently visible or not
var was_visible = $("#maincategory_" + id).is(":visible");
// Close all categories
var category_plus = STATIC_URL + "chimere/img/plus.png";
var category_minus = STATIC_URL + "chimere/img/minus.png";
- if (settings.category_accordion){
+ if (settings[map_id].category_accordion){
$("#categories ul.subcategories").hide();
$("#categories img.toggle_category").attr("src", category_plus);
$("#categories .main_category").addClass("toggle_plus");
@@ -2964,9 +3038,9 @@ function transformCoordToLonLat(coord) {
$("#maincategory_" + id).parent().removeClass("toggle_plus");
// Put a plus image
$("#maincategory_img_" + id).attr("src", category_minus);
- settings.current_category = id;
+ settings[map_id].current_category = id;
}
- if (!settings.category_accordion && was_visible)
+ if (!settings[map_id].category_accordion && was_visible)
{
$("#maincategory_" + id).toggle();
$("#maincategory_" + id).parent().addClass("toggle_plus");
@@ -2995,29 +3069,34 @@ function transformCoordToLonLat(coord) {
return;
}
extent.transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION);
- settings.map.zoomToExtent(extent, true);
+ settings[map_id].map.zoomToExtent(extent, true);
return true;
*/
},
zoomToMarkerExtent: function(){
- methods._set_animation();
+ methods._set_animation(map_id);
options = {};
if ($("#panel").is(":visible")){
options = {"padding": [0, 0, 0, $("#panel").width()]};
}
- settings.map.getView().fit(
- settings.sourceDbFeatures.getExtent(),
- settings.map.getSize(), options);
+ settings[map_id].map.getView().fit(
+ settings[map_id].sourceDbFeatures.getExtent(),
+ settings[map_id].map.getSize(), options);
},
// methods for edition
cleanMarker: function(){
- if (settings.current_edit_feature) {
- settings.layerDbFeatures.removeMarker(settings.current_edit_feature);
+ if (settings[map_id].current_edit_feature) {
+ settings[map_id].layerDbFeatures.removeMarker(settings[map_id].current_edit_feature);
}
},
/* put the marker on the map and update latitude and longitude fields */
putEditMarker: function (latlon, zoom){
- if (settings.features.getLength()) settings.features.pop();
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ if (settings[map_id].features.getLength()) settings[map_id].features.pop();
// console.log(latlon);
var point = new ol.geom.Point(latlon);
point.transform(EPSG_DISPLAY_PROJECTION, EPSG_PROJECTION);
@@ -3025,37 +3104,37 @@ function transformCoordToLonLat(coord) {
geometry: point
});
- settings.features.push(feature);
- methods.updateGenInput();
+ settings[map_id].features.push(feature);
+ methods.updateGenInput(map_id);
/* zoom to the point */
if (zoom){
- var view = settings.map.getView();
- view.fit(settings.editionSource.getExtent(), settings.map.getSize());
+ var view = settings[map_id].map.getView();
+ view.fit(settings[map_id].editionSource.getExtent(), settings[map_id].map.getSize());
view.setZoom(view.getZoom() - 11);
}
return;
},
- updateInput: function(){
- if (settings.edition_type == 'route'){
+ updateInput: function(map_id){
+ if (settings[map_id].edition_type == 'route'){
// methods.updateRoutingInput();
- methods.updateGenInput('route');
+ methods.updateGenInput(map_id, 'route');
}
- if (settings.edition_type == 'polygon'){
- methods.updateGenInput('polygon');
+ if (settings[map_id].edition_type == 'polygon'){
+ methods.updateGenInput(map_id, 'polygon');
}
- if (settings.edition_type == 'marker'){
- methods.updateGenInput('marker');
+ if (settings[map_id].edition_type == 'marker'){
+ methods.updateGenInput(map_id, 'marker');
};
},
updateMarkerInput: function(){
// ol3 TODO
- if (!settings.current_edit_feature) {
+ if (!settings[map_id].current_edit_feature) {
return;
}
- lonlat = settings.current_edit_feature.lonlat.clone().transform(
- settings.map.getProjectionObject(),
+ lonlat = settings[map_id].current_edit_feature.lonlat.clone().transform(
+ settings[map_id].map.getProjectionObject(),
EPSG_DISPLAY_PROJECTION);
- $('#'+settings.input_id).val(
+ $('#'+settings[map_id].input_id).val(
'POINT(' + lonlat.lon + ' ' + lonlat.lat + ')');
if($('#live_latitude').length){
$('#live_latitude').val(lonlat.lat);
@@ -3065,26 +3144,26 @@ function transformCoordToLonLat(coord) {
},
updateRoutingInput: function(){
- if (!settings.current_routes_features) {
+ if (!settings[map_id].current_routes_features) {
return;
}
var wkt = new ol.format.WKT();
var point_array = [];
// not very effective...
- for (idx in settings.current_routes_features){
- var coords = settings.current_routes_features[idx].getGeometry().getCoordinates();
+ for (idx in settings[map_id].current_routes_features){
+ var coords = settings[map_id].current_routes_features[idx].getGeometry().getCoordinates();
for (j in coords){
point_array.push(transformCoordToLonLat(coords[j]));
}
}
jQuery('#id_route').val(String(point_array));
},
- updateGenInput: function(){
- var features = settings.editionSource.getFeatures();
+ updateGenInput: function(map_id){
+ var features = settings[map_id].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 (settings.edition_type == 'route') input_id += 'id_route';
+ if (settings[map_id].edition_type == 'marker') input_id += settings[map_id].input_id;
+ if (settings[map_id].edition_type == 'polygon') input_id += 'id_polygon';
+ if (settings[map_id].edition_type == 'route') input_id += 'id_route';
if (!features.length) {
jQuery(input_id).val('');
@@ -3096,7 +3175,7 @@ function transformCoordToLonLat(coord) {
dataProjection: EPSG_DISPLAY_PROJECTION,
featureProjection: EPSG_PROJECTION});
jQuery(input_id).val(String(wkt));
- if(settings.edition_type == 'marker' && $('#live_latitude').length){
+ if(settings[map_id].edition_type == 'marker' && $('#live_latitude').length){
coords = features[0].getGeometry().clone().transform(
EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION).getCoordinates();
$('#live_latitude').val(coords[1]);
@@ -3104,24 +3183,24 @@ function transformCoordToLonLat(coord) {
}
},
activateCurrentControl: function(){
- if (settings.current_control){
- settings.current_control.activate();
+ if (settings[map_id].current_control){
+ settings[map_id].current_control.activate();
} else {
- var pathCreate = settings.map.getControlsByClass(
+ var pathCreate = settings[map_id].map.getControlsByClass(
'OpenLayers.Control.DrawFeature');
if (pathCreate){
pathCreate[0].activate();
}
}
- var pathModify = settings.map.getControlsByClass(
+ var pathModify = settings[map_id].map.getControlsByClass(
'OpenLayers.Control.ModifyFeature');
- if (settings.current_feature && pathModify){
- pathModify[0].selectFeature(settings.current_feature);
+ if (settings[map_id].current_feature && pathModify){
+ pathModify[0].selectFeature(settings[map_id].current_feature);
}
},
deactivateCurrentControl: function(){
- if (settings.current_control){
- settings.current_control.deactivate();
+ if (settings[map_id].current_control){
+ settings[map_id].current_control.deactivate();
}
},
initFeature: function(wkt_geometry){
@@ -3134,14 +3213,14 @@ function transformCoordToLonLat(coord) {
feature = WKT.readFeature(wkt_geometry, {
dataProjection: EPSG_DISPLAY_PROJECTION,
featureProjection: EPSG_PROJECTION});
- if (settings.draw_activated){
- settings.map.removeInteraction(settings.draw);
- settings.draw_activated = false;
+ if (settings[map_id].draw_activated){
+ settings[map_id].map.removeInteraction(settings[map_id].draw);
+ settings[map_id].draw_activated = false;
}
- settings.map.getView().fit(feature.getGeometry(),
- settings.map.getSize());
- settings.editionSource.addFeature(feature);
- methods.updateInput();
+ settings[map_id].map.getView().fit(feature.getGeometry(),
+ settings[map_id].map.getSize());
+ settings[map_id].editionSource.addFeature(feature);
+ methods.updateInput(map_id);
},
initFeatureFromWkt: function(wkt_geometry){
var linestring = OpenLayers.Geometry.fromWKT(wkt_geometry);
@@ -3152,25 +3231,25 @@ function transformCoordToLonLat(coord) {
EPSG_PROJECTION);
currentFeature = new OpenLayers.Feature.Vector();
currentFeature.geometry = linestring;
- settings.layerVectors.removeFeatures();
- settings.layerVectors.addFeatures([currentFeature]);
- var pathModify = settings.map.getControlsByClass(
+ settings[map_id].layerVectors.removeFeatures();
+ settings[map_id].layerVectors.addFeatures([currentFeature]);
+ var pathModify = settings[map_id].map.getControlsByClass(
'OpenLayers.Control.ModifyFeature');
if (pathModify){
- settings.current_control = pathModify[0];
+ settings[map_id].current_control = pathModify[0];
}
/*zoom to the route*/
- var bounds = settings.layerVectors.getDataExtent();
- if (bounds) settings.map.zoomToExtent(bounds);
+ var bounds = settings[map_id].layerVectors.getDataExtent();
+ if (bounds) settings[map_id].map.zoomToExtent(bounds);
},
showPopup: function (feature_pk) {
- var feats = settings.dbFeatures.getArray();
+ var feats = settings[map_id].dbFeatures.getArray();
for (j in feats){
var c_marker = feats[j];
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);
+ methods.openPopup(map_id, c_marker);
return true
}
}
@@ -3182,34 +3261,48 @@ function transformCoordToLonLat(coord) {
//feature.markerClick();
//OpenLayers.Popup.popupSelect.clickFeature(feature);
/*
- settings.current_popup = feature.marker._popup();
- if (!settings.current_popup.visible()){
- settings.current_popup.show();
+ settings[map_id].current_popup = feature.marker._popup();
+ if (!settings[map_id].current_popup.visible()){
+ settings[map_id].current_popup.show();
methods.display_feature_detail(feature.pk);
}*/
},
- hidePopup: function (evt) {
- $(settings.popup_item).popover('destroy');
- methods.update_permalink_activation();
+ hidePopup: function () {
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ methods._hidePopup(map_id);
+ return false;
+ },
+ _hidePopup: function (map_id, evt) {
+ $(settings[map_id].popup_item).popover('destroy');
+ methods.update_permalink_activation(map_id);
return false;
},
saveExtent: function(){
var extent_key = 'MAP_EXTENT';
//if (area_name){ extent_key = extent_key + '_' + area_name; }
- if (!settings.map) return;
- var extent = settings.map.getExtent().transform(EPSG_PROJECTION,
+ if (!settings[map_id].map) return;
+ var extent = settings[map_id].map.getExtent().transform(EPSG_PROJECTION,
EPSG_DISPLAY_PROJECTION);
document.cookie = extent_key + '=' + extent.toArray().join('_')
+ ';path=/';
},
refresh: function(){
- settings.map.updateSize();
+ var map_id = methods.map_id(this);
+ if (!map_id){
+ alert("Public method only");
+ return;
+ }
+ settings[map_id].map.updateSize();
}
}; // End of public methods
var helpers = {
getSubcategories: function (category_id) {
- if(settings.get_subcategories_fx) {
- return settings.get_subcategories_fx(category_id, settings);
+ if(settings[map_id].get_subcategories_fx) {
+ return settings[map_id].get_subcategories_fx(category_id, settings[map_id]);
}
else {
var ul = document.getElementById('maincategory_'+category_id);
@@ -3223,36 +3316,36 @@ function transformCoordToLonLat(coord) {
return subcats;
}
},
- retrieve_checked_categories: function () {
+ retrieve_checked_categories: function (map_id) {
/*
- * Retrieve checked_categories, and store it in settings
+ * Retrieve checked_categories, and store it in settings[map_id]
*/
var initialized = false;
$('#frm_categories .subcategories input:checkbox').each(
function(index){
if (!initialized){
initialized = true;
- settings.checked_categories = [];
- settings.display_submited = false;
+ settings[map_id].checked_categories = [];
+ settings[map_id].display_submited = false;
}
if ($(this).prop('checked') == 'checked' || $(this).prop('checked') == true){
cat_id = $(this).attr('id').split('_').pop();
- settings.checked_categories.push(parseInt(cat_id));
+ settings[map_id].checked_categories.push(parseInt(cat_id));
}
});
if(initialized && ($('#display_submited_check').attr("checked") == "checked" || $('#display_submited_check').attr("checked") == true)){
- settings.display_submited = true;
+ settings[map_id].display_submited = true;
}
},
zoom_to: function (bounds) {
- settings.map.zoomToExtent(bounds)
+ settings[map_id].map.zoomToExtent(bounds)
},
- zoom_to_subcategories: function (ids) {
+ zoom_to_subcategories: function (map_id, ids) {
// TODO add markers and check the subcategory, if not yet checked/displayed
var ids = ids.join('_');
if (!ids) ids = '0';
var uri = extra_url + "getGeoObjects/" + ids;
- if (settings.display_submited) uri += "/A_S";
+ if (settings[map_id].display_submited) uri += "/A_S";
$.ajax({url: uri,
dataType: "json",
success: function (data) {
@@ -3273,24 +3366,24 @@ function transformCoordToLonLat(coord) {
}
});
},
- zoom_to_category: function (id) {
- helpers.zoom_to_subcategories(helpers.getSubcategories(id));
+ zoom_to_category: function (map_id, id) {
+ helpers.zoom_to_subcategories(map_id, helpers.getSubcategories(id));
},
- zoom_to_area: function (coords) {
+ zoom_to_area: function (map_id, coords) {
/* zoom to an area */
var left = Math.round(coords[0] * 1000) / 1000;
var bottom = Math.round(coords[1] * 1000) / 1000;
var right = Math.round(coords[2] * 1000) / 1000;
var top = Math.round(coords[3] * 1000) / 1000;
- settings.view.fit(transformExtent([left, top, right, bottom]),
- settings.map.getSize());
- if (settings.dynamic_categories) {
- methods.loadCategories();
+ settings[map_id].view.fit(transformExtent([left, top, right, bottom]),
+ settings[map_id].map.getSize());
+ if (settings[map_id].dynamic_categories) {
+ methods.loadCategories(map_id);
}
},
zoom_to_latlon: function (){
var lonlat = new OpenLayers.LonLat(lon, lat);
- settings.map.setCenter(f.lonlat);
+ settings[map_id].map.setCenter(f.lonlat);
},
getSavedExtent: function() {
/* get the current extent from a cookie */
@@ -3309,12 +3402,12 @@ function transformCoordToLonLat(coord) {
},
featureRouteCreated: function(event) {
/* toggle to edition mode */
- var pathModify = settings.map.getControlsByClass(
+ var pathModify = settings[map_id].map.getControlsByClass(
'OpenLayers.Control.ModifyFeature')[0];
- var pathCreate = settings.map.getControlsByClass(
+ var pathCreate = settings[map_id].map.getControlsByClass(
'OpenLayers.Control.DrawFeature')[0];
pathCreate.deactivate();
- settings.current_control = pathModify;
+ settings[map_id].current_control = pathModify;
jQuery('#help-route-create').hide();
jQuery('#help-route-modify').show();
pathModify.activate();
@@ -3324,14 +3417,14 @@ function transformCoordToLonLat(coord) {
updateRouteForm: function(event) {
/* update the form */
if (event){
- settings.current_feature = event.feature;
+ settings[map_id].current_feature = event.feature;
}
- var current_geo = settings.current_feature.geometry.clone();
+ var current_geo = settings[map_id].current_feature.geometry.clone();
current_geo.transform(EPSG_PROJECTION, EPSG_DISPLAY_PROJECTION);
jQuery('#id_route').val(current_geo);
var vertices = current_geo.getVertices();
if (vertices){
- jQuery("#"+settings.input_id).val(vertices);
+ jQuery("#"+settings[map_id].input_id).val(vertices);
}
},
updateNominatimName:function(lonlat, response_id){
@@ -3399,17 +3492,17 @@ function transformCoordToLonLat(coord) {
else if ( typeof thing === 'object' || ! thing ) {
return methods.init.apply( this, arguments );
}
- else if ( thing === 'settings' ) {
- // Use $("#mydiv").chimere("settings", "key", "value") to change settings
+ else if ( thing === 'settings[map_id]' ) {
+ // Use $("#mydiv").chimere("settings[map_id]", "key", "value") to change settings[map_id]
// from outside the plugin
if (arguments.length == 3) {
- settings[arguments[1]] = arguments[2];
+ settings[map_id][arguments[1]] = arguments[2];
}
else if (arguments.length == 2) {
- return settings[arguments[1]];
+ return settings[map_id][arguments[1]];
}
- else { // Use $("#mydiv").chimere("settings") to know the current settings
- return settings;
+ else { // Use $("#mydiv").chimere("settings[map_id]") to know the current settings[map_id]
+ return settings[map_id];
}
}
else {