1 function init_wrmap(i, jq_map) {
3 OpenLayers.ImgPath = jq_map.attr('data-img-path'); // e.g. "/mediawiki/extensions/wrmap/openlayers/img/"
4 var jq_sledruns = jq_map.children();
7 // Introduce EPSG:3857 as an alias of the built in EPSG:900913 projection (both are the "Google/OSM" projections)
8 var EPSG4326 = new OpenLayers.Projection("EPSG:4326"); // lon/lat
9 var EPSG3857 = new OpenLayers.Projection("EPSG:3857"); // google
12 var map = new OpenLayers.Map(jq_map.context, {
14 displayProjection: EPSG4326,
20 var layer_map = new OpenLayers.Layer.Google("Google Physical", {
21 type: google.maps.MapTypeId.TERRAIN
24 // // Alternative: OSM map
25 // var layer_map = new OpenLayers.Layer.OSM();
27 // // Alternative: Microsoft Bing Maps
28 // var layer_map = new OpenLayers.Layer.Bing({
30 // key: "AgPH3SlIXAwajrJKf0FORQyhTqsP8KIlvtN6RKfvxe6fOB6q6-HFmg8EOFm7LSOA"});
33 var layer_sledruns = new OpenLayers.Layer.Vector("Rodelbahnen", {
34 styleMap: new OpenLayers.StyleMap({
35 "default": new OpenLayers.Style({
36 externalGraphic: "/vorlagen/gmap_rodelbahn_c.png",
42 backgroundGraphic: "/vorlagen/gmap_rodelbahn_c_s.png",
45 backgroundXOffset: -8,
46 backgroundYOffset: -8,
50 "highlight": new OpenLayers.Style({
52 labelOutlineColor: "white",
57 rendererOptions: {yOrdering: true}
59 jq_sledruns.each(function(j, jq_sledrun) {
60 jq_sledrun = $(jq_sledrun);
61 var lon = parseFloat(jq_sledrun.attr('data-lon'));
62 var lat = parseFloat(jq_sledrun.attr('data-lat'));
63 var point = new OpenLayers.Geometry.Point(lon, lat).transform(EPSG4326, EPSG3857);
64 layer_sledruns.addFeatures([new OpenLayers.Feature.Vector(point, {
65 label: jq_sledrun.attr('data-title'),
66 url: jq_sledrun.attr('data-url'),
67 date_report: jq_sledrun.attr('data-date_report'),
68 condition: jq_sledrun.attr('data-condition')
72 // disable mouse wheel zoom
73 var navigation_control = map.getControlsByClass('OpenLayers.Control.Navigation')[0];
74 navigation_control.disableZoomWheel();
76 // print sledrun name when mouse moves over it
77 map.addControl(new OpenLayers.Control.SelectFeature(layer_sledruns, {
81 renderIntent: "highlight"
84 // show popup when user clicks on a sledrun icon
85 map.addControl(new OpenLayers.Control.SelectFeature(layer_sledruns, {
88 onSelect: function(feature) {
90 var popup_text = "<h2>" + feature.attributes['label'] + '</h2>\n' +
92 '<li><a href="' + feature.attributes['url'] + '">Details zur Rodelbahn</a></li>\n' +
93 '<li>Rodelbahnzustand<br/>';
94 if ('date_report' in feature.attributes && 'condition' in feature.attributes) {
95 var condition_text = {1: 'Sehr gut', 2: 'Gut', 3: 'Mittelmäßig', 4: 'Schlecht', 5: 'Geht nicht'};
96 var year_month_day = feature.attributes['date_report'].split('-');
97 popup_text += '<a href="' + feature.attributes['url'] + '#Eintr.C3.A4ge">' + condition_text[feature.attributes['condition']] + '</a> ' +
98 '<small>' + year_month_day[2] + '.' + year_month_day[1] + '.</small> ' +
99 '<em><a href="' + feature.attributes['url'] + '#Eintragen">Neu</a></em>';
101 popup_text += '<em><a href="' + feature.attributes['url'] + '#Eintragen">Bitte eintragen</a></em>';
103 popup_text += '</li>\n</ul>\n';
104 var selectFeatureControl = this;
105 var popup = new OpenLayers.Popup.FramedCloud('sledruninfopopup_' + feature.attributes['label'],
106 feature.geometry.getBounds().getCenterLonLat(),
109 null, true, function(event) {
111 selectFeatureControl.unselectAll();
113 feature.popup = popup;
116 onUnselect: function(feature) {
118 map.removePopup(feature.popup);
119 feature.popup.destroy();
120 feature.popup = null;
126 map.addLayers([layer_map, layer_sledruns]);
127 var lon = parseFloat(jq_map.attr('data-center-lon'));
128 var lat = parseFloat(jq_map.attr('data-center-lat'));
129 var zoom = parseInt(jq_map.attr('data-zoom'));
130 map.setCenter(new OpenLayers.LonLat(lon, lat).transform(EPSG4326, map.getProjectionObject()), zoom);
135 function init_wrmaps() {
136 var jq_maps = $('.wrmap'); // all wrmap <div> elements
137 jq_maps.each(init_wrmap);
141 $(document).ready(init_wrmaps);