Skip to content

Commit 2ebde23

Browse files
committed
Fix #80: Use the default map style for the map v3
If the map v3 is used, the default map style defined in the admin page is not taken into account. Actually the issue is deeper: some choices available on the admin page are not listed in the provider list (OSM FR, OSM HOT, MapQuest for instance). The custom map style are not available neither. This patch adds the following map providers: - OpenStreetMap_France - OpenStreetMap_HOT - MapQuestOpen_OSM - MapQuestOpen_Aerial And the custom one. The one defined as default in the admin form will be activated. The icons used are retrieved from the providers' servers (tile 5/15/11).
1 parent bda5b43 commit 2ebde23

2 files changed

Lines changed: 87 additions & 1 deletion

File tree

include/functions_map.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,9 +536,25 @@ function osm_gen_template($conf, $js, $js_data, $tmpl, $template)
536536
'TOTAL' => sprintf( l10n('ITEMS'), count($js_data) ),
537537
'OSMJS' => $js,
538538
'MYROOT_URL' => get_absolute_root_url(),
539+
'default_baselayer' => $conf['osm_conf']['map']['baselayer'],
539540
)
540541
);
541542

543+
if ( $conf['osm_conf']['map']['baselayer'] == 'custom' ) {
544+
$iconbaselayer = $conf['osm_conf']['map']['custombaselayerurl'];
545+
$iconbaselayer = str_replace('{s}', 'a', $iconbaselayer);
546+
$iconbaselayer = str_replace('{z}', '5', $iconbaselayer);
547+
$iconbaselayer = str_replace('{x}', '15', $iconbaselayer);
548+
$iconbaselayer = str_replace('{y}', '11', $iconbaselayer);
549+
$template->assign(
550+
array(
551+
'custombaselayer' => $conf['osm_conf']['map']['custombaselayer'],
552+
'custombaselayerurl' => $conf['osm_conf']['map']['custombaselayerurl'],
553+
'iconbaselayer' => $iconbaselayer,
554+
)
555+
);
556+
}
557+
542558
$template->pparse('map');
543559
$template->p();
544560
}

template/osm-map3.tpl

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,19 @@ html, body {
229229
* Here because of the icon path
230230
*/
231231
232+
var provider_mapping = {
233+
'mapnik' : 'OpenStreetMap_Mapnik',
234+
'blackandwhite' : 'OpenStreetMap_BlackAndWhite',
235+
'mapnikfr' : 'OpenStreetMap_France',
236+
'mapnikde' : 'OpenStreetMap_DE',
237+
'mapnikhot' : 'OpenStreetMap_HOT',
238+
'mapquest' : 'MapQuestOpen_OSM',
239+
'mapquestaerial' : 'MapQuestOpen_Aerial',
240+
'cloudmade' : 'CloudMade',
241+
'toner' : 'Stamen_Toner',
242+
'custom' : 'Custom',
243+
};
244+
232245
var providers = {};
233246
234247
providers['OpenStreetMap_Mapnik'] = {
@@ -249,6 +262,15 @@ providers['OpenStreetMap_BlackAndWhite'] = {
249262
})
250263
};
251264
265+
providers['OpenStreetMap_France'] = {
266+
title: 'osm fr',
267+
icon: 'https://a.tile.openstreetmap.fr/osmfr/5/15/11.png',
268+
layer: L.tileLayer('https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', {
269+
maxZoom: 19,
270+
attribution: '&copy; Openstreetmap France | &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
271+
})
272+
}
273+
252274
providers['OpenStreetMap_DE'] = {
253275
title: 'osm de',
254276
icon: '{/literal}{$OSM_PATH}{literal}leaflet/icons/openstreetmap_de.png',
@@ -258,6 +280,34 @@ providers['OpenStreetMap_DE'] = {
258280
})
259281
}
260282
283+
providers['OpenStreetMap_HOT'] = {
284+
title: 'osm HOT',
285+
icon: 'http://a.tile.openstreetmap.fr/hot/5/15/11.png',
286+
layer: L.tileLayer('http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', {
287+
maxZoom: 19,
288+
attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>'
289+
})
290+
}
291+
292+
providers['MapQuestOpen_OSM'] = {
293+
title: 'MapQuest',
294+
icon: 'http://otile1.mqcdn.com/tiles/1.0.0/map/5/15/11.png',
295+
layer: L.tileLayer('http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png', {
296+
maxZoom: 19,
297+
attribution: 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> &mdash; Map data &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
298+
subdomains: '1234'
299+
})
300+
}
301+
302+
providers['MapQuestOpen_Aerial'] = {
303+
title: 'MapQuest Aerial',
304+
icon: 'http://otile1.mqcdn.com/tiles/1.0.0/sat/5/15/11.png',
305+
layer: L.tileLayer('http://otile{s}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.png', {
306+
attribution: 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> &mdash; Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency',
307+
subdomains: '1234'
308+
})
309+
}
310+
261311
providers['Stamen_Toner'] = {
262312
title: 'toner',
263313
icon: '{/literal}{$OSM_PATH}{literal}leaflet/icons/stamen_toner.png',
@@ -340,12 +390,32 @@ providers['CartoDB_Positron'] = {
340390
})
341391
};
342392
393+
{/literal}
394+
{if $default_baselayer == 'custom'}
395+
{literal}
396+
providers['Custom'] = {
397+
title: '{/literal}{$custombaselayer}{literal}',
398+
icon: '{/literal}{$iconbaselayer}{literal}',
399+
layer: L.tileLayer('{/literal}{$custombaselayerurl}{literal}', {
400+
// The following attribution might be wrong
401+
// Please refer to https://leaflet-extras.github.io/leaflet-providers/preview/
402+
// to get the correct attribution notice.
403+
attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
404+
maxZoom: 19
405+
})
406+
};
407+
{/literal}
408+
{/if}
409+
{literal}
410+
343411
/* BEGIN Leaflet-IconLayers https://github.com/ScanEx/Leaflet-IconLayers */
344412
var layers = [];
345413
for (var providerId in providers) {
346414
layers.push(providers[providerId]); // Providers from providers.js
347415
}
348-
var ctrl = L.control.iconLayers(layers).addTo(map);
416+
var il = L.control.iconLayers(layers);
417+
il.setActiveLayer(providers[provider_mapping['{/literal}{$default_baselayer}{literal}']].layer);
418+
var ctrl = il.addTo(map);
349419
/* END Leaflet-IconLayers */
350420
351421

0 commit comments

Comments
 (0)