|
|
(5 välissä olevaa versiota samalta käyttäjältä ei näytetä) |
Rivi 2: |
Rivi 2: |
| var jwMapSiteStyleCache = {}; | | var jwMapSiteStyleCache = {}; |
|
| |
|
| var epsg4326;
| | function isCSSloaded(href) { |
| var mapProjStr = "3857";
| | var links = document.getElementsByTagName('link'); |
| var projectTo;
| | for (var i = 0; i < links.length; i++) { |
| var currentPopup = null;
| | if (links[i].getAttribute('href') === href) { |
| var orgMapHeight;
| | return true; |
| var orgZindex;
| | } |
| //var jwLayerSelector;
| | } |
| | | return false; |
| function jwMakeMap(jwMapId) { | |
| | |
| var locate = false;
| |
| var tools = 'info_drag';
| |
| var toolsArr = tools.split('_');
| |
| | |
| map = jwMakeMapNew(jwMapId);
| |
|
| |
| jwAddMapNavigation(map);
| |
| jwAddMapTools(map, toolsArr);
| |
| //jwAddControlFullscreen(map);
| |
| jwAddMapLayerSwitcher(map);
| |
|
| |
| //jwStyleControls(jwMapId);
| |
|
| |
| return map;
| |
| }
| |
| | |
| function jwMakeMapNew(jwMapId) {
| |
| epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
| |
| projectTo = new OpenLayers.Projection("EPSG:" + mapProjStr); // Map proj
| |
| | |
| jQuery('#' + jwMapId + '_container').append('<div id="' + jwMapId + '" style="height: 100%; background-color: #ffffff; "></div>');
| |
| var target = document.getElementById(jwMapId);
| |
| | |
| //map object
| |
| var options = {
| |
| projection: "EPSG:" + mapProjStr,
| |
| units: "m",
| |
| controls: [
| |
| //new OpenLayers.Control.Zoom(),
| |
| //new OpenLayers.Control.ZoomBox(),
| |
| //new OpenLayers.Control.LayerSwitcher({'div': 'olLayerSwitcherContainer', 'ascending': false }),
| |
| //new OpenLayers.Control.LayerSwitcher({'ascending': false }),
| |
| new OpenLayers.Control.Attribution(),
| |
| jwLayerSelector = new OpenLayers.Control.SelectFeature([])
| |
| //new OpenLayers.Control.Fullscreen()
| |
| ]
| |
| };
| |
| var map = new OpenLayers.Map( jwMapId, options );
| |
| map.selector = jwLayerSelector;
| |
| return map;
| |
| } | |
| | |
| function jwAddMapNavigation(map) {
| |
| map.addControl(new OpenLayers.Control.Zoom());
| |
| map.addControl(new OpenLayers.Control.PanPanel());
| |
| } | | } |
|
| |
|
| function jwAddMapLayerSwitcher(map) { | | function loadCSS(href) { |
| //map.addControl(new OpenLayers.Control.LayerSwitcher({'div': 'olLayerSwitcherContainer', 'ascending': false }));
| | if (!isCSSloaded(href)) { |
| map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending': false }));
| | var link = document.createElement('link'); |
| }
| | link.rel = 'stylesheet'; |
| | | link.type = 'text/css'; |
| function jwAddMapTools(map, toolsArr) {
| | link.href = href; |
| | | document.getElementsByTagName('head')[0].appendChild(link); |
| if (toolsArr == undefined) { toolsArr = new Array('0info', 'drag'); }
| | } |
| | |
| var btnArr = new Array();
| |
|
| |
| var context = {
| |
| getZIndex: function(feature) {
| |
| return (feature.geometry instanceof OpenLayers.Geometry.Point) ? 1 : 0;
| |
| }
| |
| }
| |
| var style = OpenLayers.Util.applyDefaults({
| |
| graphicWidth: 26,
| |
| graphicHeight: 32,
| |
| graphicYOffset: -32,
| |
| graphicOpacity: 1,
| |
| graphicZIndex: "${getZIndex}",
| |
| externalGraphic: '/w/images/7/7b/Pm_havaintopaikka.png',
| |
| }, OpenLayers.Feature.Vector.style['default']);
| |
| var temporarystyle = OpenLayers.Util.applyDefaults({}, OpenLayers.Feature.Vector.style['temporary']);
| |
| var styleMap = new OpenLayers.StyleMap({
| |
| "default": new OpenLayers.Style(style, {context: context}),
| |
| "temporary": new OpenLayers.Style(temporarystyle, {context: context})
| |
| });
| |
|
| |
| var shapeLayer = new OpenLayers.Layer.Vector( "User shapes", { styleMap: styleMap, 'displayInLayerSwitcher': false } );
| |
| map.addLayer( shapeLayer );
| |
|
| |
| //map.setLayerIndex(shapeLayer, 10000);
| |
| shapeLayer.addOptions({ popuppable: false, zIndex: 1000 }, false);
| |
| doLayers(map);
| |
|
| |
| var SinglePoint = OpenLayers.Class(OpenLayers.Handler.Point, {});
| |
| | |
| var Path = OpenLayers.Class(OpenLayers.Handler.Path, {
| |
| addPoint: function(pixel) {
| |
| var r = true;
| |
| if (this.control.layer.features.length > 0) {
| |
| if (typeof this.control.layer.features[0].geometry.components !== 'undefined') {
| |
| if (this.control.layer.features[0].geometry.components[0].components.length > 10) {
| |
| r = confirm("Olet aloittamassa uuden viivan piirtämistä, jolloin vanha alue tai viiva poistetaan. Haluatko jatkaa?");
| |
| }
| |
| }
| |
| } else {
| |
| OpenLayers.Handler.Polygon.prototype.addPoint.apply(this, arguments);
| |
| }
| |
| if (r) {
| |
| this.control.layer.removeFeatures(this.control.layer.features);
| |
| OpenLayers.Handler.Path.prototype.addPoint.apply(this, arguments);
| |
| clearDrawings();
| |
| }
| |
| }
| |
| });
| |
| | |
| var Polygon = OpenLayers.Class(OpenLayers.Handler.Polygon, {
| |
| addPoint: function(pixel) {
| |
| var r = true;
| |
| if (this.control.layer.features.length > 0) {
| |
| if (typeof this.control.layer.features[0].geometry.components !== 'undefined') {
| |
| if (this.control.layer.features[0].geometry.components[0].components.length > 10) {
| |
| r = confirm("Olet aloittamassa uuden alueen piirtämistä, jolloin vanha alue poistetaan. Haluatko jatkaa?");
| |
| }
| |
| }
| |
| } else {
| |
| OpenLayers.Handler.Polygon.prototype.addPoint.apply(this, arguments);
| |
| }
| |
| if (r) {
| |
| this.control.layer.removeFeatures(this.control.layer.features);
| |
| OpenLayers.Handler.Polygon.prototype.addPoint.apply(this, arguments);
| |
| clearDrawings();
| |
| }
| |
| }
| |
| });
| |
|
| |
| var drawControls = {
| |
| info: map.selector,
| |
| drag: new OpenLayers.Control.Navigation(),
| |
| point: new OpenLayers.Control.DrawFeature(shapeLayer, SinglePoint),
| |
| line: new OpenLayers.Control.DrawFeature(shapeLayer, Path),
| |
| polygon: new OpenLayers.Control.DrawFeature(shapeLayer, Polygon),
| |
| edit: new OpenLayers.Control.ModifyFeature(shapeLayer, OpenLayers.Handler.Modify),
| |
| del: new OpenLayers.Control.SelectFeature(shapeLayer, { hover: true, highlightOnly: true } ),
| |
| del2: new OpenLayers.Control.SelectFeature(shapeLayer, { onSelect: deleteOnSelect } )
| |
| };
| |
| drawControls['point'].handler.callbacks.done = function(data) {
| |
| var r = true;
| |
| if (this.layer.features.length > 0) {
| |
| if (typeof this.layer.features[0].geometry.components !== 'undefined') {
| |
| if (this.layer.features[0].geometry.components[0].components.length > 10) {
| |
| r = confirm("Olet merkitsemässä karttaan uutta paikkaa, jolloin äsken piirtämäsi alue tai viiva poistetaan. Haluatko jatkaa?");
| |
| }
| |
| }
| |
| }
| |
| if (r) {
| |
| this.layer.removeFeatures(this.layer.features);
| |
| this.drawFeature(data);
| |
| saveDrawings();
| |
| }
| |
| }
| |
| drawControls['polygon'].handler.callbacks.done = function(data) {
| |
| this.drawFeature(data);
| |
| saveDrawings();
| |
| }
| |
|
| |
| drawControls['line'].handler.callbacks.done = function(data) {
| |
| this.drawFeature(data);
| |
| saveDrawings();
| |
| }
| |
|
| |
| for(var key in drawControls) {
| |
| map.addControl(drawControls[key]);
| |
| }
| |
|
| |
|
| |
| var drawPanel = new OpenLayers.Control.Panel({
| |
| displayClass: 'olControlDrawEdit',
| |
| createControlMarkup: function(control) {
| |
| var button = document.createElement('div');
| |
| var bg = document.createElement('div');
| |
| bg.className = 'olButtonBg';
| |
| button.appendChild(bg);
| |
| var icon = document.createElement('div');
| |
| icon.className = 'olButtonIcon';
| |
| button.appendChild(icon);
| |
| return button;
| |
| }
| |
| });
| |
|
| |
| var defaultTool = -1;
| |
|
| |
| var i = -1;
| |
| for (e in toolsArr) {
| |
|
| |
| i++;
| |
| | |
| tool = toolsArr[e];
| |
|
| |
| if (tool.charAt(0) == '0') {
| |
| t = tool.replace("0", "");
| |
| defaultTool = i;
| |
| } else {
| |
| t = tool;
| |
| }
| |
| | |
| | |
| if (t == 'drag') {
| |
| var dragPanBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_BUTTON,
| |
| displayClass: 'olControlDragPanBtn ',
| |
| title: 'Drag the map',
| |
| control: [drawControls.drag],
| |
| trigger: function() { toggleControl(dragPanBtn); }
| |
| });
| |
| drawPanel.addControls([ dragPanBtn ] );
| |
| btnArr.push(dragPanBtn);
| |
| } else if (t == 'info') {
| |
| var infoBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_BUTTON,
| |
| displayClass: 'olControlInfoBtn ',
| |
| title: 'Select from map',
| |
| control: [drawControls.info],
| |
| trigger: function() { toggleControl(infoBtn); }
| |
| });
| |
| drawPanel.addControls([ infoBtn ] );
| |
| btnArr.push(infoBtn);
| |
| } else if (t == 'point') {
| |
| var pointBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_BUTTON,
| |
| displayClass: 'olControlPointBtn ',
| |
| title: 'Draw a single point on the map',
| |
| control: [drawControls.point],
| |
| trigger: function() { toggleControl(pointBtn); }
| |
| });
| |
| drawPanel.addControls([ pointBtn ] );
| |
| btnArr.push(pointBtn);
| |
| } else if (t == 'path') {
| |
| var lineBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_BUTTON,
| |
| displayClass: 'olControlLineBtn ',
| |
| title: 'Draw a line on the map',
| |
| control: [drawControls.line],
| |
| trigger: function() { toggleControl(lineBtn); }
| |
| });
| |
| drawPanel.addControls([ lineBtn ] );
| |
| btnArr.push(lineBtn);
| |
| } else if (t == 'polygon') {
| |
| var polygonBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_BUTTON,
| |
| displayClass: 'olControlPolygonBtn ',
| |
| title: 'Draw a polygon on the map',
| |
| control: [drawControls.polygon],
| |
| trigger: function() { toggleControl(polygonBtn); }
| |
| });
| |
| drawPanel.addControls([ polygonBtn ] );
| |
| btnArr.push(polygonBtn);
| |
| } else if (t == 'edit') {
| |
| var editBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_BUTTON,
| |
| displayClass: 'olControlEditBtn ',
| |
| title: 'Edit user added shapes on map',
| |
| control: [drawControls.edit],
| |
| trigger: function() { toggleControl(editBtn); }
| |
| });
| |
| drawPanel.addControls([ editBtn ] );
| |
| btnArr.push(editBtn);
| |
| } else if (t == 'delete') {
| |
| var deleteBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_BUTTON,
| |
| displayClass: 'olControlDeleteBtn ',
| |
| title: 'Delete user added shapes from the map',
| |
| control: [drawControls.del, drawControls.del2],
| |
| trigger: function() { toggleControl(deleteBtn); }
| |
| });
| |
| drawPanel.addControls([ deleteBtn ] );
| |
| btnArr.push(deleteBtn);
| |
| }
| |
| }
| |
|
| |
| map.addControl( drawPanel );
| |
|
| |
| if (defaultTool < 0) {
| |
| toggleControl(btnArr[0]);
| |
| } else {
| |
| toggleControl(btnArr[defaultTool]);
| |
| }
| |
|
| |
| function toggleControl(btn) {
| |
|
| |
| for (a in btnArr) {
| |
| btnArr[a].deactivate();
| |
| }
| |
|
| |
| for (key in drawControls) {
| |
| drawControls[key].deactivate();
| |
| }
| |
|
| |
| btn.activate();
| |
| | |
| for (k in btn.control) {
| |
| btn.control[k].activate();
| |
| }
| |
|
| |
| }
| |
|
| |
| function deleteOnSelect(f) {
| |
| shapeLayer.removeFeatures( [f] );
| |
| //saveDrawings();
| |
| }
| |
|
| |
| //shapeLayer.events.register("featureadded", shapeLayer, saveDrawings );
| |
| shapeLayer.events.register("beforefeaturemodified", shapeLayer, clearDrawings);
| |
| shapeLayer.events.register("afterfeaturemodified", shapeLayer, saveDrawings);
| |
| shapeLayer.events.register("featureadded", shapeLayer, saveDrawings);
| |
|
| |
| //drawControls['polygon'].events.register("featureadded", ' ' , saveDrawings);
| |
|
| |
| //map.events.register("zoomend", map, saveDrawings);
| |
|
| |
| loadDrawings();
| |
|
| |
| function loadDrawings() {
| |
| var parent = jQuery(map.div).parents('.jwCoordsFromMap').first();
| |
| var wkt = parent.find('.jwWKT').first().val();
| |
| if (wkt != undefined) {
| |
| if (wkt != '') {
| |
| var in_options = {
| |
| 'internalProjection': projectTo,
| |
| 'externalProjection': epsg4326
| |
| };
| |
| var loadFormat = new OpenLayers.Format.WKT(in_options);
| |
| var wktFeatures = loadFormat.read(wkt);
| |
|
| |
| shapeLayer.addFeatures(wktFeatures);
| |
| map.zoomToExtent(shapeLayer.getDataExtent());
| |
| }
| |
| }
| |
| }
| |
|
| |
| function clearDrawings(x) {
| |
| jQuery('.jwCoordsFromMap .jwMuni').val('');
| |
| jQuery('.jwCoordsFromMap .jwWKT').val('');
| |
| jQuery('.jwCoordsFromMap .jwLat').val('');
| |
| jQuery('.jwCoordsFromMap .jwLon').val('');
| |
| jQuery('.jwCoordsFromMap .jwCoords').val('');
| |
| jQuery('.jwCoordsFromMap .jwZoom').val('');
| |
| jQuery('.jwCoordsFromMap .jwAreaVal').val('');
| |
| jQuery('.jwCoordsFromMap .jwAreaUnit').val('');
| |
| }
| |
|
| |
| function saveDrawings(x) {
| |
| | |
| var out_options = {
| |
| 'internalProjection': projectTo,
| |
| 'externalProjection': epsg4326
| |
| };
| |
| var saveFormat = new OpenLayers.Format.WKT(out_options);
| |
| var wkt = "";
| |
| wkt += saveFormat.write(shapeLayer.features, true);
| |
|
| |
| var Rargs = '';
| |
| var verticesArr = shapeLayer.features[0].geometry.getVertices();
| |
| for (v in verticesArr) {
| |
| point = new OpenLayers.Geometry.Point(verticesArr[v].x, verticesArr[v].y ).transform(projectTo, epsg4326);
| |
| Rargs += ' ' + point.x + ' ' + point.y;
| |
| }
| |
|
| |
| var centerLonLat = shapeLayer.getDataExtent().getCenterLonLat().transform(projectTo, epsg4326);
| |
|
| |
| Rargs += ' ' + centerLonLat.lon + ' ' + centerLonLat.lat;
| |
|
| |
| Rargs = Rargs.trim();
| |
|
| |
| //var searchStr = 'lon=' + centerLonLat.lon + '&lat=' + centerLonLat.lat;
| |
| var searchStr = 'Rargs=' + Rargs;
| |
| lastCalled = new Date();
| |
|
| |
| jQuery.ajax({
| |
| type: 'POST',
| |
| url: '/common/jwCoordinateIn.php',
| |
| data: searchStr,
| |
| success: success,
| |
| called: lastCalled,
| |
| dataType: 'json'
| |
| });
| |
| | |
| var parent = jQuery(map.div).parents('.jwCoordsFromMap').first();
| |
|
| |
| if (shapeLayer.features[0].geometry.getArea() > 0) {
| |
| var area = shapeLayer.features[0].geometry.getGeodesicArea(projectTo) / 10000;
| |
| area = Math.round(area*100)/100;
| |
| parent.find('.jwAreaVal').first().val(area);
| |
| parent.find('.jwAreaUnit').first().val('ha');
| |
| }
| |
|
| |
| parent.find('.jwWKT').first().val(wkt);
| |
| parent.find('.jwLat').first().val(centerLonLat.lat);
| |
| parent.find('.jwLon').first().val(centerLonLat.lon);
| |
| parent.find('.jwCoords').first().val(centerLonLat.lat + ', ' + centerLonLat.lon);
| |
| parent.find('.jwZoom').first().val(map.getZoom());
| |
| parent.find('.jwAreaVal').first().val(area);
| |
| parent.find('.jwAreaUnit').first().val('ha');
| |
|
| |
| function success(request) {
| |
| if (this.called == lastCalled) {
| |
| jQuery('.jwMuni').val(request.kunta);
| |
| }
| |
| }
| |
|
| |
| }
| |
| | |
|
| |
| }
| |
| | |
| | |
| | |
| function jwMakeMapX(jwMapId) {
| |
| epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
| |
| projectTo = new OpenLayers.Projection("EPSG:" + mapProjStr); // Map proj
| |
| | |
| jQuery('#' + jwMapId + '_container').append('<div id="' + jwMapId + '" style="height: 100%; background-color: #ffffff; "></div>');
| |
| var target = document.getElementById(jwMapId);
| |
| | |
| //map object
| |
| var options = {
| |
| projection: "EPSG:" + mapProjStr,
| |
| units: "m",
| |
| controls: [
| |
| new OpenLayers.Control.Zoom(),
| |
| new OpenLayers.Control.ZoomBox(),
| |
| //new OpenLayers.Control.LayerSwitcher({'div': 'olLayerSwitcherContainer', 'ascending': false }),
| |
| new OpenLayers.Control.LayerSwitcher({'ascending': false }),
| |
| new OpenLayers.Control.Attribution(),
| |
| jwLayerSelector = new OpenLayers.Control.SelectFeature([])
| |
| //new OpenLayers.Control.Fullscreen()
| |
| ]
| |
| };
| |
| var map = new OpenLayers.Map( jwMapId, options );
| |
| map.selector = jwLayerSelector;
| |
| return map;
| |
| }
| |
| | |
| function jwStyleControls(jwMapId) {
| |
| jQuery('#' + jwMapId + ' .maximizeDiv').append('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
| |
| jQuery('#' + jwMapId + ' .minimizeDiv').append('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
| |
| jQuery('#' + jwMapId + ' .olControlZoomIn').html('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
| |
| jQuery('#' + jwMapId + ' .olControlZoomOut').html('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
| |
| }
| |
| | |
| | |
| var closecallback = function(e) {
| |
| this.hide();
| |
| OpenLayers.Event.stop(e);
| |
| this.map.selector.unselectAll();
| |
| }
| |
| | |
| function doLayers(map) {
| |
| | |
| map.selector.deactivate();
| |
| map.selector.setLayer(map.getLayersBy("popuppable", true));
| |
| map.selector.activate();
| |
|
| |
| var zLayers = map.getLayersBy("zIndex", new RegExp("[0-9]"));
| |
| var lrOptions;
| |
| zLayers.sort(function(a, b){return a.options.zIndex - b.options.zIndex});
| |
|
| |
| for (var i in zLayers) {
| |
| lrOptions = zLayers[i].getOptions();
| |
| zLayers[i].setZIndex(lrOptions.zIndex);
| |
| map.setLayerIndex(zLayers[i], lrOptions.zIndex);
| |
| }
| |
| }
| |
| | |
| function jwAddSeaAreas(options) {
| |
| | |
| var searchStr = 'action=ask&query=[[Luokka:Merialue]]' + options.query;
| |
| searchStr += '&format=json';
| |
| | |
| function gotIt(siteReq) {
| |
| | |
| if (siteReq.query.results != undefined) {
| |
|
| |
| var alueetArr = new Array();
| |
|
| |
| for (i in siteReq.query.results) {
| |
| alueetArr.push(siteReq.query.results[i].fulltext);
| |
| }
| |
|
| |
| jwAddBalticDivisions(options.map, options.lang, alueetArr, options.zoomTo, options.popup, options.zIndex);
| |
| }
| |
| }
| |
| | |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| success: gotIt,
| |
| dataType: 'jsonp',
| |
| cache: false
| |
| });
| |
| }
| |
| | |
| function jwAddMuni(options) {
| |
| | |
| var map = options.map;
| |
| | |
| var searchStr = 'action=ask&query=[[Luokka:Kunta]][[Koordinaatit::%2B]]' + options.query; //.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('|?Koordinaatit|?KoordPohj');
| |
| searchStr += '&format=json';
| |
| | |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| success: gotIt,
| |
| dataType: 'jsonp',
| |
| cache: false
| |
| });
| |
| | |
| function gotIt(siteReq) {
| |
| | |
| if (siteReq.query.results != undefined) {
| |
|
| |
| first = true;
| |
| | |
| for (i in siteReq.query.results) {
| |
| | |
| if (first) {
| |
| first = false;
| |
| var sites = new OpenLayers.Layer.Vector('Kunnat', {
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| map.addLayer(sites);
| |
| sites.addOptions({ popuppable: true, zIndex: options.zIndex }, false);
| |
| doLayers(map);
| |
| }
| |
| | |
|
| |
| site = siteReq.query.results[i];
| |
| title = site.fulltext;
| |
| uri = site.fullurl;
| |
| coordP = site.printouts.Koordinaatit[0].lat;
| |
| coordE = site.printouts.Koordinaatit[0].lon;
| |
| popupContent = '<a href="' + uri + '"><h3>' + title + '</h3></a><hr>';
| |
| ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
| |
| addJwMarker(sites, '', ll, popupContent, 'kunta', null, null, options.size);
| |
| if (options.zoomTo) {
| |
| if (options.zoom == undefined) {
| |
| map.zoomToExtent(sites.getDataExtent());
| |
| } else {
| |
| map.setCenter(sites.getDataExtent().getCenterLonLat(), options.zoom);
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| function jwAddAnyPages(options) {
| |
| | |
| if (options.popup == undefined) { options.popup = true; }
| |
| | |
| var map = options.map;
| |
| var searchStr = 'action=ask&query=[[Koordinaatit::%2B]]' + decodeURI(options.query);
| |
| searchStr += ('|?Koordinaatit|?Ylläpito|?Luokka|limit=1000');
| |
| searchStr += '&format=json';
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| success: gotPages,
| |
| dataType: 'jsonp',
| |
| cache: false,
| |
| options: options
| |
| });
| |
| //console.log(searchStr);
| |
| function gotPages(siteReq) {
| |
| if (!!siteReq.query.results) {
| |
| | |
| var sites = new OpenLayers.Layer.Vector(options.layerName, {
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| map.addLayer(sites);
| |
| sites.addOptions({ popuppable: this.options.popup, zIndex: this.options.zIndex }, false);
| |
| doLayers(map);
| |
| | |
| for (i in siteReq.query.results) {
| |
|
| |
| site = siteReq.query.results[i];
| |
| title = site.fulltext;
| |
| uri = site.fullurl;
| |
| coordP = site.printouts.Koordinaatit[0].lat;
| |
| coordE = site.printouts.Koordinaatit[0].lon;
| |
| cats = site.printouts.Luokka;
| |
| if (!options.type) {
| |
| types = '*';
| |
| for (c in cats) {
| |
| types += cats[c].fulltext.replace('Luokka:', '');
| |
| }
| |
| //console.log(title);
| |
| //console.log(types);
| |
| if (types.indexOf('Havaintopaikka')>0) { type = 'obsSite'; }
| |
| else if (types.indexOf('Tapahtuma')>0) { type = 'event'; }
| |
| else if (types.indexOf('Valokuva')>0) { type = 'photo'; }
| |
| else if (types.indexOf('Järvi')>0) { type = 'lake'; }
| |
| else if (types.indexOf('Merialue')>0) { type = 'merialue'; }
| |
| else if (types.indexOf('Kunta')>0) { type = 'kunta'; }
| |
| else { type = ''; }
| |
| this.options.type = type;
| |
| //console.log(type);
| |
| }
| |
| popupContent = '<a href="' + uri + '"><h3>' + title + '</h3></a><hr>';
| |
| ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
| |
| //console.log(site.printouts);
| |
| addJwMarker(sites, site.printouts["Ylläpito"][0], ll, popupContent, this.options.type, null, null, this.options.size);
| |
| if (this.options.zoomTo) {
| |
| if (this.options.zoom == undefined) {
| |
| map.zoomToExtent(sites.getDataExtent());
| |
| } else {
| |
| map.setCenter(sites.getDataExtent().getCenterLonLat(), this.options.zoom);
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| | |
| function jwAddSites(map, query, z, size, lang, zoomTo, zoom) {
| |
| | |
| var searchStr = 'action=ask&query=[[Luokka:Paikka]][[Koordinaatit::%2B]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('|?Koordinaatit|?Ylläpito|?KoordPohj|limit=1000');
| |
| searchStr += '&format=json';
| |
| | |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| size: size,
| |
| lang: lang,
| |
| success: gotSites,
| |
| dataType: 'jsonp',
| |
| zoomTo: zoomTo,
| |
| zoom: zoom,
| |
| cache: false
| |
| });
| |
| | |
| function gotSites(siteReq) {
| |
| | |
| if (siteReq.query.results != undefined) {
| |
| | |
| var sites = new OpenLayers.Layer.Vector(JwSiteLabels('sites', lang), {
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| map.addLayer(sites);
| |
| sites.data = new Object();
| |
| sites.data.z = z;
| |
| sites.data.popup = true;
| |
| sites.addOptions({ popuppable: true, zIndex: z }, false);
| |
| doLayers(map);
| |
|
| |
| var zi=0;
| |
| | |
| for (i in siteReq.query.results) {
| |
|
| |
| site = siteReq.query.results[i];
| |
| title = site.fulltext;
| |
| uri = site.fullurl;
| |
| coordP = site.printouts.Koordinaatit[0].lat;
| |
| coordE = site.printouts.Koordinaatit[0].lon;
| |
| | |
| catSearchStr = 'action=query&titles=' + title + '&prop=categories&format=json';
| |
| | |
| function gotCats(catsReq) {
| |
| | |
| if (catsReq.query.pages != undefined) {
| |
| | |
| for (var cats in catsReq.query.pages) if (catsReq.query.pages.hasOwnProperty(cats)) break;
| |
| var catPhoto = false;
| |
| var catEvent = false;
| |
| var catObs = false;
| |
| var catAlg = false;
| |
| for (var ci in catsReq.query.pages[cats].categories) {
| |
| cat = catsReq.query.pages[cats].categories[ci].title;
| |
| if (cat == 'Luokka:Valokuva') { catPhoto = true; }
| |
| else if (cat == 'Luokka:Tapahtumapaikka') { catEvent = true; }
| |
| else if (cat == 'Luokka:Havaintopaikka') { catObs = true; }
| |
| else if (cat == 'Luokka:Valtakunnallinen leväseuranta' ) { catAlg = true; }
| |
|
| |
| if (catAlg) { type = 'algMon'; }
| |
| else if (catObs) { type = 'obsSite'; }
| |
| else if (catEvent) { type = 'event'; }
| |
| else if (catPhoto) { type = 'photo'; }
| |
| else { type = ''; }
| |
| }
| |
| | |
| }
| |
| //console.log(type);
| |
| popupContent = '<a href="' + this.siteUri + '"><h3><span class="smaller">' + this.siteNameArr[0] + '</span><br />' + this.siteNameArr[1] + '</h3></a><hr>';
| |
| ll = new OpenLayers.LonLat( this.siteLon, this.siteLat ).transform(epsg4326, projectTo);
| |
| addJwMarker(sites, this.siteStatus, ll, popupContent, type, null, null, size);
| |
| if (this.zoomTo) {
| |
| if (this.zoom == undefined) {
| |
| map.zoomToExtent(sites.getDataExtent());
| |
| } else {
| |
| map.setCenter(sites.getDataExtent().getCenterLonLat(), this.zoom);
| |
| }
| |
| }
| |
| }
| |
|
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: catSearchStr,
| |
| success: gotCats,
| |
| dataType: 'jsonp',
| |
| cache: false,
| |
| siteName: title,
| |
| siteNameArr: title.split('/'),
| |
| siteUri: uri,
| |
| siteLat: coordP,
| |
| siteLon: coordE,
| |
| siteStatus: site.printouts["Ylläpito"][0],
| |
| siteOrder: zi,
| |
| zoomTo: this.zoomTo,
| |
| zoom: this.zoom
| |
| });
| |
| zi++;
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| | |
| function jwAddLayerWKT(map, options) {
| |
| | |
| | |
| if (options.zIndex == undefined) { options.zIndex = 15; }
| |
| if (!!options.lang) { lang = options.lang; } else { lang = 'fi'; }
| |
| if (!!options.layerName) { layerName = options.layerName; } else { layerName = 'Layer'; }
| |
|
| |
| var in_options = { 'internalProjection': projectTo, 'externalProjection': epsg4326 };
| |
|
| |
| var WKTlayer = new OpenLayers.Layer.Vector(layerName, lang, {
| |
| eventListeners:{
| |
| 'featureselected': function(evt) {
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt) {
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| | |
| map.addLayer(WKTlayer);
| |
| | |
| WKTlayer.addOptions({ popuppable: false, zIndex: options.zIndex }, false);
| |
| doLayers(map);
| |
| | |
| var loadFormat = new OpenLayers.Format.WKT(in_options);
| |
| | |
| var wktFeatures = loadFormat.read(options.WKT);
| |
| | |
| //popupContent = 'Just testing';
| |
|
| |
| //wktFeatures[0].data.popupContent = popupContent;
| |
| | |
| WKTlayer.addFeatures(wktFeatures);
| |
|
| |
| if (options.zoomTo) { map.zoomToExtent(WKTlayer.getDataExtent()); }
| |
|
| |
| }
| |
| | |
| | |
| function jwAddWKTlr(map, options, lang) {
| |
| | |
| // { WKT: {{{WKT|}}}, zIndex: 15, iconSize: '27x34', zoomTo: true });
| |
| if (options.zIndex == undefined) { options.zIndex = 15; }
| |
| var in_options = { 'internalProjection': projectTo, 'externalProjection': epsg4326 };
| |
| | |
| var searchStr = 'action=ask&query=' + options.query.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('|?WKT|?Kunta|?Pinta-ala');
| |
| searchStr += '&format=json';
| |
| | |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| size: options.iconSize,
| |
| lang: lang,
| |
| zoomTo: options.zoomTo,
| |
| success: gotIt,
| |
| dataType: 'jsonp',
| |
| cache: false
| |
| });
| |
|
| |
| function gotIt(request) {
| |
|
| |
| if (request.query.results != undefined) {
| |
|
| |
| var WKTlr = new OpenLayers.Layer.Vector(JwSiteLabels('lakes', lang), {
| |
| eventListeners:{
| |
| 'featureselected': function(evt) {
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt) {
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| map.addLayer(WKTlr);
| |
| WKTlr.addOptions({ popuppable: true, zIndex: options.zIndex }, false);
| |
| doLayers(map);
| |
|
| |
| var loadFormat = new OpenLayers.Format.WKT(in_options);
| |
|
| |
| for (i in request.query.results) {
| |
| page = request.query.results[i];
| |
| WKT = page.printouts.WKT[0];
| |
| }
| |
|
| |
| //console.log(page.printouts);
| |
| var wktFeatures = loadFormat.read(WKT);
| |
| | |
| popupContent = 'Just testing';
| |
| if (page.printouts['Pinta-ala'].length > 0) {
| |
| popupContent += 'Pinta-ala: ' + page.printouts['Pinta-ala'][0].value + ' ' + page.printouts['Pinta-ala'][0].unit;
| |
| }
| |
| var kunnatArr = new Array();
| |
| for (k in page.printouts.Kunta) {
| |
| kunta = page.printouts.Kunta[k];
| |
| kunnatArr.push('<a href="' + kunta.fullurl + '">' + kunta.fulltext + '</a>');
| |
| }
| |
| if (kunnatArr.length > 0) {
| |
| popupContent += 'Kunta: ' + kunnatArr.join(', ');
| |
| }
| |
| wktFeatures[0].data.popupContent = popupContent;
| |
| | |
| WKTlr.addFeatures(wktFeatures);
| |
| if (options.zoomTo) { map.zoomToExtent(WKTlr.getDataExtent()); }
| |
|
| |
| }
| |
| }
| |
| }
| |
| | |
| function jwAddLakesNew(options) {
| |
| jwAddLakes(options.map, options.query, options.zIndex, options.size, options.lang, options.zoomTo);
| |
| }
| |
| | |
| function jwAddLakes(map, query, z, size, lang, zoomTo) {
| |
| | |
| var searchStr = 'action=ask&query=[[Luokka:J%C3%A4rvi]][[Koordinaatit::%2B]]' + query.split("&#39;").join("%27"); //.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('|?Koordinaatit|?KoordPohj|?Pinta-ala|?Kunta|sort=Pinta-ala|order=desc|limit=1000');
| |
| searchStr += '&format=json';
| |
| //console.log(searchStr);
| |
| jQuery.ajax({
| |
| type: 'POST',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| size: size,
| |
| lang: lang,
| |
| zoomTo: zoomTo,
| |
| success: gotLakes,
| |
| dataType: 'jsonp',
| |
| cache: false
| |
| });
| |
| | |
| function gotLakes(siteReq) {
| |
| console.log(siteReq);
| |
| if (siteReq.query.results != undefined) {
| |
| | |
| var lakes = new OpenLayers.Layer.Vector(JwSiteLabels('lakes', lang), {
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| map.addLayer(lakes);
| |
| lakes.addOptions({ popuppable: true, zIndex: z }, false);
| |
| doLayers(map);
| |
|
| |
| var zi=0;
| |
| | |
| for (i in siteReq.query.results) {
| |
|
| |
| site = siteReq.query.results[i];
| |
| title = site.fulltext;
| |
| titleArr = title.split('/'),
| |
| uri = site.fullurl;
| |
| coordP = site.printouts.Koordinaatit[0].lat;
| |
| coordE = site.printouts.Koordinaatit[0].lon;
| |
| | |
| popupContent = '<a href="' + uri + '"><h3>' + title + '</h3></a><hr>';
| |
| popupContent += '<p>Pinta-ala: ' + site.printouts['Pinta-ala'][0].value + ' ' + site.printouts['Pinta-ala'][0].unit + '</p>';
| |
|
| |
| popupContent += '<p>Kunta: ';
| |
| var kunnat = new Array();
| |
|
| |
| for (k in site.printouts['Kunta']) {
| |
| kunta = site.printouts['Kunta'][k];
| |
| kunnat.push('<a href="' + kunta.fullurl + '">' + kunta.fulltext + '</a>');
| |
| }
| |
| popupContent += kunnat.join(', ') + '</p>';
| |
|
| |
| + site.printouts['Kunta'][0].fulltext;
| |
| ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
| |
| addJwMarker(lakes, '', ll, popupContent, 'lake', null, null, size);
| |
| if (zoomTo) {
| |
| //map.setCenter(lakes.getDataExtent().getCenterLonLat(), 15);
| |
| map.zoomToExtent(lakes.getDataExtent());
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| | |
| function jwAddAnyObs(options) {
| |
| | |
| var map = options.map;
| |
| | |
| var today = new Date();
| |
| var oneWeekAgo = new Date();
| |
| var tenDaysAgo = new Date();
| |
| oneWeekAgo.setDate(today.getDate() - 7);
| |
| tenDaysAgo.setDate(today.getDate() - 10);
| |
|
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + encodeURI(options.query);
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Tyyppi|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
|
| |
| type = 'algal';
| |
|
| |
| function gotObservations(obsReq) {
| |
|
| |
| if (!!obsReq.query.results && obsReq.query.meta.count > 0) {
| |
|
| |
| var obsArray = new Array();
| |
|
| |
| for (var i in obsReq.query.results) {
| |
| obsArray.push(obsReq.query.results[i]);
| |
| }
| |
|
| |
| obsReq.query.results = obsArray;
| |
| }
| |
|
| |
| if (!!obsReq.query.results) {
| |
| | |
| if (obsReq.query.meta.count > 0) {
| |
|
| |
| var observations = new OpenLayers.Layer.Vector( options.layerName, {
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| | |
| map.addLayer(observations);
| |
| observations.addOptions({ popuppable: true, zIndex: options.zIndex }, false);
| |
| doLayers(map);
| |
|
| |
| var obsObj = new Object();
| |
| var siteIDsArr = new Array();
| |
|
| |
| for (var i in obsReq.query.results) {
| |
|
| |
| observation = obsReq.query.results[i];
| |
| siteID = observation.printouts.SiteID[0];
| |
|
| |
| title = observation.fulltext;
| |
| if (title.indexOf('S Arkisto:') == 0) {
| |
| siteIDsArr.push(obsReq.query.results[i].printouts.SiteID[0]);
| |
| } else {
| |
| title = title.substr(0, title.indexOf('#'));
| |
| }
| |
|
| |
| obsObj[siteID] = { title: title, observation: observation, sort: parseFloat(observation.printouts["Päivämäärä"][0]) };
| |
| }
| |
|
| |
| function doMarkers() {
| |
|
| |
| var obsArr = new Array();
| |
| | |
| for (var o in obsObj) {
| |
| obsArr.push(obsObj[o]);
| |
| }
| |
| obsArr.sort(function(a,b) { return a.sort-b.sort; });
| |
| | |
| for (var i in obsArr) {
| |
|
| |
| if ( obsArr[i].title != '-') {
| |
| | |
| observation = obsArr[i].observation;
| |
| | |
| title = obsArr[i].title;
| |
| | |
| titleArr = title.split('/');
| |
| uri = '/wiki/' + title;
| |
| | |
| coordP = observation.printouts.Koordinaatit[0].lat;
| |
| coordE = observation.printouts.Koordinaatit[0].lon;
| |
| ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
| |
| obsDate = new Date(toDateFromSecsSince1970(observation.printouts.Päivämäärä[0]));
| |
| maintainer = observation.printouts["Ylläpito"][0];
| |
| | |
| popupContent = '<a href="' + uri + '"><h3><span class="smaller">' + titleArr[0] + '</span><br />' + titleArr[1] + '</h3></a><hr>';
| |
| | |
| switch (type) {
| |
| case 'temp':
| |
| val2 = observation.printouts['Pintaveden lämpötila'][0].value;
| |
| if (val2 < 10) {
| |
| val = 1;
| |
| } else if (val2 < 15) {
| |
| val = 2;
| |
| } else if (val2 < 20) {
| |
| val = 3;
| |
| } else {
| |
| val = 4;
| |
| }
| |
| popupContent += '<p><b>' + val2 + ' °C</b> (' + obsDate.inRelationToToday() + ')</p>';
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'temp', val, val2, options.size);
| |
| | |
| break;
| |
| case 'ice':
| |
| val = observation.printouts.Jäätilanne[0];
| |
| if (val == 3) {
| |
| if (observation.printouts['Jään paksuus'].length > 0) {
| |
| val2 = observation.printouts['Jään paksuus'][0].value;
| |
| popupContent += '<p>' + JwSiteLabels('ice3', options.lang) + ': ' + val2 + ' cm (' + obsDate.inRelationToToday() + ')</p>';
| |
| } else {
| |
| val2 = -1;
| |
| popupContent += '<p>' + JwSiteLabels('ice3', options.lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
| |
| }
| |
| } else {
| |
| val2 = -1;
| |
| popupContent += '<p>' + JwSiteLabels('ice'+val, options.lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
| |
| }
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'ice', val, val2, options.size);
| |
| break;
| |
| case 'algal':
| |
| if (observation.printouts.Levätilanne[0] != undefined) {
| |
| val = observation.printouts.Levätilanne[0];
| |
| val2 = -1;
| |
| popupContent += '<p><b>' + JwSiteLabels('algal' + val, options.lang) + '</b>';
| |
| popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'algal', val, val2, options.size);
| |
| } else { console.log(popupContent); }
| |
| break;
| |
| case 'jellys':
| |
| if (observation.printouts["Meduusojen runsaus"][0] != undefined) {
| |
| val = observation.printouts["Meduusojen runsaus"][0];
| |
| val2 = -1;
| |
| popupContent += '<p><b>' + JwSiteLabels('jellys' + val, options.lang) + '</b>';
| |
| popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'jellys', val, val2, options.size);
| |
| } else { console.log(popupContent); }
| |
| break;
| |
| }
| |
| }
| |
| }
| |
| }
| |
|
| |
| function gotSiteIDs(IDsReq) {
| |
| //console.log(IDsReq);
| |
| if (!!IDsReq.query.pages) {
| |
| | |
| for (var id in IDsReq.query.pages) {
| |
| if ( typeof IDsReq.query.pages[id].title === "undefined" ) {
| |
| obsObj[id].title = '-';
| |
| } else {
| |
| obsObj[id].title = IDsReq.query.pages[id].title;
| |
| }
| |
| }
| |
| }
| |
| | |
| IDblocks--;
| |
| if (IDblocks == 0) {
| |
| doMarkers();
| |
| }
| |
| }
| |
| | |
| var IDblocks = 0;
| |
| if (siteIDsArr.length > 0) {
| |
| for (b=0; b < siteIDsArr.length; b+=50) {
| |
| IDblocks++;
| |
| searchSiteID = 'action=query&pageids=' + siteIDsArr.slice(b, b+50).join(encodeURI('|')) + '&format=json';
| |
| jQuery.ajax({
| |
| type: 'POST',
| |
| cache: false,
| |
| url: queryApi,
| |
| data: searchSiteID,
| |
| dataType: 'jsonp',
| |
| success: gotSiteIDs
| |
| });
| |
| }
| |
| } else {
| |
| doMarkers();
| |
| }
| |
| }
| |
| }
| |
| }
| |
|
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| cache: false,
| |
| url: queryApi,
| |
| data: searchStr,
| |
| dataType: 'jsonp',
| |
| success: gotObservations,
| |
| obsType: type
| |
| });
| |
|
| |
| }
| |
| | |
| function jwAddObs(map, type, query, z, size, lang) {
| |
| | |
| var today = new Date();
| |
| var oneWeekAgo = new Date();
| |
| var tenDaysAgo = new Date();
| |
| oneWeekAgo.setDate(today.getDate() - 7);
| |
| tenDaysAgo.setDate(today.getDate() - 10);
| |
|
| |
| switch (type) {
| |
| case 'temp':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query; //.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += '[[Pintaveden l%C3%A4mp%c3%b6tila::%2B]]';
| |
| //searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::>' + oneWeekAgo.yyyymmdd() + ']]';
| |
| //searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::<' + today.yyyymmdd() + ']]';
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Pintaveden lämpötila|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=2000');
| |
| searchStr += '&format=json';
| |
| break;
| |
| case 'ice':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('[[Tyyppi::Jäätilanne]]');
| |
| //searchStr += encodeURI('[[Päivämäärä::>' + tenDaysAgo.yyyymmdd() + ']]');
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Jäätilanne|?Jään paksuus|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| break;
| |
| case 'algal':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
| |
| //searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']]');
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=2000');
| |
| searchStr += '&format=json';
| |
| break;
| |
| case 'algalW':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
| |
| //searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| type = 'algal';
| |
| break;
| |
| case 'jellys':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query;
| |
| searchStr += encodeURI('[[Tyyppi::Meduusat]]');
| |
| //searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Meduusojen runsaus|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| type = 'jellys';
| |
| break;
| |
| }
| |
| | |
| function gotObservations(obsReq) {
| |
| | |
| if (!!obsReq.query.results && obsReq.query.meta.count > 0) {
| |
|
| |
| var obsArray = new Array();
| |
|
| |
| for (var i in obsReq.query.results) {
| |
| obsArray.push(obsReq.query.results[i]);
| |
| }
| |
|
| |
| obsReq.query.results = obsArray;
| |
| }
| |
|
| |
| if (!!obsReq.query.results) {
| |
| | |
| if (obsReq.query.meta.count > 0) {
| |
|
| |
| var observations = new OpenLayers.Layer.Vector( JwSiteLabels(type, lang), {
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| | |
| map.addLayer(observations);
| |
| observations.addOptions({ popuppable: true, zIndex: z }, false);
| |
| doLayers(map);
| |
|
| |
| var obsObj = new Object();
| |
| var siteIDsArr = new Array();
| |
|
| |
| for (var i in obsReq.query.results) {
| |
|
| |
| observation = obsReq.query.results[i];
| |
| siteID = observation.printouts.SiteID[0];
| |
|
| |
| title = observation.fulltext;
| |
| if (title.indexOf('S Arkisto:') == 0) {
| |
| siteIDsArr.push(obsReq.query.results[i].printouts.SiteID[0]);
| |
| } else {
| |
| title = title.substr(0, title.indexOf('#'));
| |
| }
| |
|
| |
| obsObj[siteID] = { title: title, observation: observation, sort: parseFloat(observation.printouts["Päivämäärä"][0]) };
| |
| }
| |
| | |
| function doMarkers() {
| |
|
| |
| var obsArr = new Array();
| |
| | |
| for (var o in obsObj) {
| |
| obsArr.push(obsObj[o]);
| |
| }
| |
| obsArr.sort(function(a,b) { return a.sort-b.sort; });
| |
| //console.log(obsArr);
| |
| | |
| for (var i in obsArr) {
| |
| | |
| observation = obsArr[i].observation;
| |
|
| |
| title = obsArr[i].title;
| |
|
| |
| titleArr = title.split('/');
| |
| uri = '/wiki/' + title;
| |
| | |
| coordP = observation.printouts.Koordinaatit[0].lat;
| |
| coordE = observation.printouts.Koordinaatit[0].lon;
| |
| ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
| |
| obsDate = new Date(toDateFromSecsSince1970(observation.printouts.Päivämäärä[0]));
| |
| maintainer = observation.printouts["Ylläpito"][0];
| |
| | |
| popupContent = '<a href="' + uri + '"><h3><span class="smaller">' + titleArr[0] + '</span><br />' + titleArr[1] + '</h3></a><hr>';
| |
| | |
| switch (type) {
| |
| case 'temp':
| |
| val2 = observation.printouts['Pintaveden lämpötila'][0].value;
| |
| if (val2 < 10) {
| |
| val = 1;
| |
| } else if (val2 < 15) {
| |
| val = 2;
| |
| } else if (val2 < 20) {
| |
| val = 3;
| |
| } else {
| |
| val = 4;
| |
| }
| |
| popupContent += '<p><b>' + val2 + ' °C</b> (' + obsDate.inRelationToToday() + ')</p>';
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'temp', val, val2, size);
| |
| | |
| break;
| |
| case 'ice':
| |
| val = observation.printouts.Jäätilanne[0];
| |
| if (val == 3) {
| |
| if (observation.printouts['Jään paksuus'].length > 0) {
| |
| val2 = observation.printouts['Jään paksuus'][0].value;
| |
| popupContent += '<p>' + JwSiteLabels('ice3', lang) + ': ' + val2 + ' cm (' + obsDate.inRelationToToday() + ')</p>';
| |
| } else {
| |
| val2 = -1;
| |
| popupContent += '<p>' + JwSiteLabels('ice3', lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
| |
| }
| |
| } else {
| |
| val2 = -1;
| |
| popupContent += '<p>' + JwSiteLabels('ice'+val, lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
| |
| }
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'ice', val, val2, size);
| |
| break;
| |
| case 'algal':
| |
| if (observation.printouts.Levätilanne[0] != undefined) {
| |
| val = observation.printouts.Levätilanne[0];
| |
| val2 = -1;
| |
| popupContent += '<p><b>' + JwSiteLabels('algal' + val, lang) + '</b>';
| |
| popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'algal', val, val2, size);
| |
| } else { console.log(popupContent); }
| |
| break;
| |
| case 'jellys':
| |
| if (observation.printouts["Meduusojen runsaus"][0] != undefined) {
| |
| val = observation.printouts["Meduusojen runsaus"][0];
| |
| val2 = -1;
| |
| popupContent += '<p><b>' + JwSiteLabels('jellys' + val, lang) + '</b>';
| |
| popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'jellys', val, val2, size);
| |
| } else { console.log(popupContent); }
| |
| break;
| |
| }
| |
| }
| |
| }
| |
|
| |
| function gotSiteIDs(IDsReq) {
| |
| | |
| if (!!IDsReq.query.pages) {
| |
| | |
| for (var id in IDsReq.query.pages) {
| |
| obsObj[id].title = IDsReq.query.pages[id].title;
| |
| }
| |
| }
| |
| | |
| IDblocks--;
| |
| if (IDblocks == 0) {
| |
| doMarkers();
| |
| }
| |
| }
| |
| | |
| var IDblocks = 0;
| |
| if (siteIDsArr.length > 0) {
| |
| for (b=0; b < siteIDsArr.length; b+=50) {
| |
| IDblocks++;
| |
| searchSiteID = 'action=query&pageids=' + siteIDsArr.slice(b, b+50).join(encodeURI('|')) + '&format=json';
| |
| jQuery.ajax({
| |
| type: 'POST',
| |
| cache: false,
| |
| url: queryApi,
| |
| data: searchSiteID,
| |
| dataType: 'jsonp',
| |
| success: gotSiteIDs
| |
| });
| |
| }
| |
| } else {
| |
| doMarkers();
| |
| }
| |
| }
| |
| | |
| }
| |
| }
| |
| | |
| jQuery.ajax({
| |
| url: queryApi,
| |
| type: 'POST',
| |
| data: searchStr,
| |
| dataType: 'jsonp',
| |
| success: gotObservations,
| |
| obsType: type
| |
| });
| |
|
| |
| }
| |
| | |
| function jwAddObservations(map, type, query, z, size, lang) {
| |
| | |
| var today = new Date();
| |
| var oneWeekAgo = new Date();
| |
| var tenDaysAgo = new Date();
| |
| oneWeekAgo.setDate(today.getDate() - 7);
| |
| tenDaysAgo.setDate(today.getDate() - 10);
| |
| switch (type) {
| |
| case 'temp':
| |
| query += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::>' + oneWeekAgo.yyyymmdd() + ']]';
| |
| break;
| |
| case 'ice':
| |
| query += encodeURI('[[Päivämäärä::>' + tenDaysAgo.yyyymmdd() + ']]');
| |
| break;
| |
| case 'algal':
| |
| query += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']]');
| |
| break;
| |
| case 'algalW':
| |
| break;
| |
| case 'jellys':
| |
| break;
| |
| }
| |
| | |
| jwAddObs( map, type, query, z, size, lang);
| |
| }
| |
| | |
| function jwAddObservationsOLD(map, type, query, z, size, lang) {
| |
| | |
| var today = new Date();
| |
| var oneWeekAgo = new Date();
| |
| var tenDaysAgo = new Date();
| |
| oneWeekAgo.setDate(today.getDate() - 7);
| |
| tenDaysAgo.setDate(today.getDate() - 10);
| |
|
| |
| switch (type) {
| |
| case 'temp':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query; //.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += '[[Pintaveden l%C3%A4mp%c3%b6tila::%2B]]';
| |
| searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::>' + oneWeekAgo.yyyymmdd() + ']]';
| |
| //searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::<' + today.yyyymmdd() + ']]';
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Pintaveden lämpötila|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| break;
| |
| case 'ice':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('[[Tyyppi::Jäätilanne]]');
| |
| searchStr += encodeURI('[[Päivämäärä::>' + tenDaysAgo.yyyymmdd() + ']]');
| |
| | |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Jäätilanne|?Jään paksuus|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| break;
| |
| case 'algal':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query; //.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
| |
| searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']]');
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| break;
| |
| case 'algalW':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
| |
| searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
| |
| //searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| type = 'algal';
| |
| break;
| |
| case 'jellys':
| |
| var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query;
| |
| searchStr += encodeURI('[[Tyyppi::Meduusat]]');
| |
| //searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
| |
| searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Meduusojen runsaus|?Ylläpito');
| |
| searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
| |
| searchStr += '&format=json';
| |
| type = 'jellys';
| |
| break;
| |
| }
| |
| | |
| function gotObservations(obsReq) {
| |
|
| |
| if (obsReq.query.results != undefined) {
| |
| | |
| if (obsReq.query.meta.count > 0) {
| |
| var observations = new OpenLayers.Layer.Vector( JwSiteLabels(type, lang), {
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
| |
| evt.feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| map.removePopup(evt.feature.popup);
| |
| evt.feature.popup.destroy();
| |
| evt.feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
| | |
| map.addLayer(observations);
| |
| observations.addOptions({ popuppable: true, zIndex: z }, false);
| |
| doLayers(map);
| |
|
| |
| siteIDsArr = new Array();
| |
| for (var i in obsReq.query.results) {
| |
| siteIDsArr.push(obsReq.query.results[i].printouts.SiteID[0]);
| |
| }
| |
| searchSiteID = 'action=query&pageids=' + siteIDsArr.join('|') + '&format=json';
| |
|
| |
| | |
| | |
|
| |
| for (var i in obsReq.query.results) {
| |
|
| |
| observation = obsReq.query.results[i];
| |
|
| |
| title = observation.fulltext;
| |
| if (title.indexOf('S Arkisto:') == 0) {
| |
|
| |
| function gotSiteID(siteReq) {
| |
| for (var s in siteReq.query.pages) {
| |
| site = siteReq.query.pages[s];
| |
| doObsMarker(this.obs, site.title);
| |
| //console.log(site.title);
| |
| break;
| |
| }
| |
| }
| |
|
| |
| searchSiteID = 'action=query&pageids=' + observation.printouts.SiteID[0] + '&format=json';
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| cache: false,
| |
| url: queryApi,
| |
| data: searchSiteID,
| |
| dataType: 'jsonp',
| |
| success: gotSiteID,
| |
| obs: observation
| |
| });
| |
|
| |
| } else {
| |
| doObsMarker(observation, title.replace('S Arkisto:', '').substr(0, title.indexOf('#')));
| |
| }
| |
|
| |
| function doObsMarker(observation, title) {
| |
|
| |
| // }
| |
| | |
| //title = title.replace('S Arkisto:', '');
| |
| //console.log(title);
| |
| //title = title.substr(0, title.indexOf('#'));
| |
| //console.log(title);
| |
| titleArr = title.split('/');
| |
| //uri = observation.fullurl.replace('S_Arkisto:', '');
| |
| //uri = uri.substr(0, uri.indexOf('#'));
| |
| uri = '//www.jarviwiki.fi/wiki/' + title;
| |
| | |
| coordP = observation.printouts.Koordinaatit[0].lat;
| |
| coordE = observation.printouts.Koordinaatit[0].lon;
| |
| ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
| |
| obsDate = new Date(toDateFromSecsSince1970(observation.printouts.Päivämäärä[0]));
| |
| maintainer = observation.printouts["Ylläpito"][0];
| |
| | |
| popupContent = '<a href="' + uri + '"><h3><span class="smaller">' + titleArr[0] + '</span><br />' + titleArr[1] + '</h3></a><hr>';
| |
|
| |
| switch (type) {
| |
| case 'temp':
| |
| val2 = observation.printouts['Pintaveden lämpötila'][0].value;
| |
| if (val2 < 10) {
| |
| val = 1;
| |
| } else if (val2 < 15) {
| |
| val = 2;
| |
| } else if (val2 < 20) {
| |
| val = 3;
| |
| } else {
| |
| val = 4;
| |
| }
| |
| popupContent += '<p><b>' + val2 + ' °C</b> (' + obsDate.inRelationToToday() + ')</p>';
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'temp', val, val2, size);
| |
|
| |
| break;
| |
| case 'ice':
| |
| val = observation.printouts.Jäätilanne[0];
| |
| if (val == 3) {
| |
| if (observation.printouts['Jään paksuus'].length > 0) {
| |
| val2 = observation.printouts['Jään paksuus'][0].value;
| |
| popupContent += '<p>' + JwSiteLabels('ice3', lang) + ': ' + val2 + ' cm (' + obsDate.inRelationToToday() + ')</p>';
| |
| } else {
| |
| val2 = -1;
| |
| popupContent += '<p>' + JwSiteLabels('ice3', lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
| |
| }
| |
| } else {
| |
| val2 = -1;
| |
| popupContent += '<p>' + JwSiteLabels('ice'+val, lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
| |
| }
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'ice', val, val2, size);
| |
| break;
| |
| case 'algal':
| |
| if (observation.printouts.Levätilanne[0] != undefined) {
| |
| val = observation.printouts.Levätilanne[0];
| |
| val2 = -1;
| |
| popupContent += '<p><b>' + JwSiteLabels('algal' + val, lang) + '</b>';
| |
| popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'algal', val, val2, size);
| |
| } else { console.log(popupContent); }
| |
| break;
| |
| case 'jellys':
| |
| if (observation.printouts["Meduusojen runsaus"][0] != undefined) {
| |
| val = observation.printouts["Meduusojen runsaus"][0];
| |
| val2 = -1;
| |
| popupContent += '<p><b>' + JwSiteLabels('jellys' + val, lang) + '</b>';
| |
| popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
| |
| addJwMarker(observations, maintainer, ll, popupContent, 'jellys', val, val2, size);
| |
| } else { console.log(popupContent); }
| |
| break;
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
| }
| |
|
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| cache: false,
| |
| url: queryApi,
| |
| data: searchStr,
| |
| dataType: 'jsonp',
| |
| success: gotObservations,
| |
| obsType: type
| |
| });
| |
|
| |
| }
| |
| | |
| | |
| function addJwMarker(layer, iconStat, ll, popupContentHTML, type, iconVal, iconVal2, size) {
| |
| | |
| var map = layer.Map;
| |
| var pm_val = '';
| |
| var feature = new OpenLayers.Feature(layer, ll);
| |
| feature.lonlat = ll;
| |
| var pm_size = '_' + size;
| |
| var sizeArr = size.split('x');
| |
| var iconw = sizeArr[0];
| |
| var iconh = sizeArr[1];
| |
| var iconhOffset;
| |
| if (iconw == iconh) {
| |
| iconhOffset = -iconh/2;
| |
| } else {
| |
| iconhOffset = -iconh;
| |
| }
| |
| if (!iconStat) { iconStat = ''; }
| |
| | |
| switch (iconStat.substr(0, 3).toLowerCase()) {
| |
| case "tav":
| |
| statStr = "";
| |
| popupContentHTML += '<p style="white-space: nowrap;">' + JwSiteLabels('manByUsr', lang) + '</p>';
| |
| break;
| |
| case "kok":
| |
| statStr = "kokenut";
| |
| popupContentHTML += '<p style="white-space:nowrap;">' + JwSiteLabels('manByExd', lang) + '</p>';
| |
| break;
| |
| case "asi":
| |
| statStr = "asiantuntija";
| |
| popupContentHTML += '<p style="white-space:nowrap;">' + JwSiteLabels('manByExp', lang) + '</p>';
| |
| break;
| |
| case "vir":
| |
| statStr = "viranomainen";
| |
| popupContentHTML += '<p style="white-space:nowrap;">' + JwSiteLabels('manByAuth', lang) + '</p>';
| |
| break;
| |
| default:
| |
| statStr = "";
| |
| }
| |
| pm_type = '_' + statStr;
| |
| | |
| switch (type) {
| |
|
| |
| case 'lake':
| |
| base = 'jarvi';
| |
| break;
| |
| case 'merialue':
| |
| base = 'merialue';
| |
| break;
| |
| case 'algMon':
| |
| if (size == '19x19') {
| |
| base = 'leg';
| |
| } else {
| |
| base = 'havaintopaikka';
| |
| }
| |
| break;
| |
| case 'photo':
| |
| base = 'valokuva';
| |
| break;
| |
| case 'event':
| |
| base = 'tapahtuma';
| |
| break;
| |
| case 'obsSite':
| |
| base = 'havaintopaikka';
| |
| break;
| |
| case 'temp':
| |
| base = 'temp' + iconVal.toString();
| |
| if (iconw > 25) {
| |
| pm_val = Math.round(iconVal2).toString() + '%B0';
| |
| } else {
| |
| pm_val = Math.round(iconVal2).toString();
| |
| }
| |
| break;
| |
| case 'ice':
| |
| base = 'ice' + iconVal.toString();
| |
| if (iconVal == 3) {
| |
| if (iconVal2 > 0) {
| |
| pm_val = Math.round(iconVal2).toString();
| |
| }
| |
| } else {
| |
| pmVal = '';
| |
| }
| |
| break;
| |
| case 'algal':
| |
| base = 'algal' + iconVal.toString();
| |
| pmVal = '';
| |
| break;
| |
| case 'jellys':
| |
| base = 'jellys' + iconVal.toString();
| |
| pmVal = '';
| |
| break;
| |
| default:
| |
| if (!type) { base = 'kohde'; } else { base = type; }
| |
| break;
| |
| }
| |
| pm_base = 'pm_' + base;
| |
| | |
| var point = new OpenLayers.Geometry.Point(ll.lon,ll.lat);
| |
| var marker = new OpenLayers.Feature.Vector(
| |
| point,
| |
| { labelText: 'Testing' },
| |
| { externalGraphic: '//www.jarviwiki.fi/dynpm/pm.php?&base=' + pm_base + '&text=' + pm_val + '&type=' + pm_type + '&size=' + pm_size,
| |
| graphicWidth: iconw,
| |
| graphicHeight: iconh,
| |
| //graphicXOffset: iconw/2,
| |
| graphicYOffset: iconhOffset,
| |
| fillOpacity: 1
| |
| }
| |
| );
| |
| marker.data.popupContent = popupContentHTML;
| |
| layer.addFeatures([marker]);
| |
| }
| |
| | |
| | |
| function jwAddBaseMap(map, type, lang) {
| |
|
| |
| var layer;
| |
| switch (type) {
| |
|
| |
| case 'mmlPerus':
| |
| layer = new OpenLayers.Layer.WMS(JwMapLabels('mmlPerus', lang), "http://tiles.kartat.kapsi.fi/peruskartta?", {layers: 'peruskartta'}, {projection: 'EPSG:900913', attribution: JwMapLabels('mmlAttr', lang) });
| |
| map.addLayer( layer );
| |
| break;
| |
| case 'mmlOrto':
| |
| layer = new OpenLayers.Layer.WMS(JwMapLabels('mmlOrto', lang), "http://tiles.kartat.kapsi.fi/ortokuva?", {layers: 'ortokuva'}, {projection: 'EPSG:900913', minScale:40000, maxScale:5000, attribution: JwMapLabels('mmlAttr', lang) });
| |
| map.addLayer( layer );
| |
| break;
| |
| case 'mmlTausta':
| |
| layer = new OpenLayers.Layer.WMS(JwMapLabels('mmlTausta', lang), "http://tiles.kartat.kapsi.fi/taustakartta?", {layers: 'taustakartta'}, {projection: 'EPSG:900913', attribution: JwMapLabels('mmlAttr', lang) });
| |
| map.addLayer( layer );
| |
| break;
| |
| case 'osm':
| |
| layer = new OpenLayers.Layer.OSM(JwMapLabels('osm', lang), null, {sphericalMercator: true, projection: projectTo, transitionEffect: "resize", attribution: JwMapLabels('osmAttr', lang) });
| |
| map.addLayer( layer );
| |
| break;
| |
| case 'google':
| |
| layer = new OpenLayers.Layer.Google(JwMapLabels('google', lang), null, {sphericalMercator: true, projection: projectTo, attribution: JwMapLabels('googleAttr', lang) });
| |
| map.addLayer( layer );
| |
| break;
| |
| }
| |
| return layer;
| |
| }
| |
| | |
| function jwAddSeaBasin(map, lang, page, zoomTo, popup, z) {
| |
| var searchStr = 'action=ask&query=[[Luokka:Merialue]][[Alue::' + page + ']]';
| |
| searchStr += encodeURI('|limit=1000');
| |
| searchStr += '&format=json';
| |
|
| |
| function gotRequest(request) {
| |
|
| |
| var alueetArr = new Array();
| |
| if (request.query.results != undefined) {
| |
| for (var i in request.query.results) {
| |
| alueetArr.push(request.query.results[i].fulltext);
| |
| }
| |
| }
| |
| jwAddBalticDivisions(map, lang, alueetArr, zoomTo, popup, z);
| |
| }
| |
|
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| success: gotRequest,
| |
| dataType: 'jsonp',
| |
| cache: false
| |
| });
| |
| }
| |
| | |
| function jwAddBalticDivisions(map, lang, alueetArr, zoomTo, popup, z) {
| |
| | |
| var divs = alueetArr.length;
| |
| if (zoomTo === undefined) { zoomTo = false; }
| |
| if (popup === undefined) { popup = true; }
| |
| if (z === undefined) { z = 10; }
| |
|
| |
| var merialueet = new OpenLayers.Layer.Vector("Alueet",{
| |
| attribution: '<a href="http://helcom.fi/baltic-sea-trends/data-maps/">HELCOM</a>',
| |
| styleMap: new OpenLayers.StyleMap({
| |
| "default": new OpenLayers.Style({
| |
| fillColor: "#79a68f",
| |
| fillOpacity: 0.4,
| |
| strokeColor: "#09738b",
| |
| strokeWidth: 0.5
| |
| }),
| |
| "select": new OpenLayers.Style({
| |
| fillColor: "#79a68f",
| |
| fillOpacity: 0.6,
| |
| strokeColor: "#09738b",
| |
| strokeWidth: 0.5
| |
| })
| |
| }),
| |
| eventListeners:{
| |
| 'featureselected': function(evt){
| |
| var feature = evt.feature;
| |
| var popupCont = '<a href="' + feature.data.pageUrl + '"><h3>' + feature.attributes.labelText + '</h3></a>';
| |
| var popup = new OpenLayers.Popup.FramedCloud("popup",
| |
| evt.feature.geometry.getBounds().getCenterLonLat(),
| |
| null,
| |
| popupCont,
| |
| null,
| |
| true,
| |
| null
| |
| );
| |
| popup.autoSize = true;
| |
| popup.maxSize = new OpenLayers.Size(400,800);
| |
| popup.fixedRelativePosition = true;
| |
| feature.popup = popup;
| |
| map.addPopup(popup);
| |
| },
| |
| 'featureunselected':function(evt){
| |
| var feature = evt.feature;
| |
| map.removePopup(feature.popup);
| |
| feature.popup.destroy();
| |
| feature.popup = null;
| |
| }
| |
| }
| |
| });
| |
|
| |
| function gotWKT(request) {
| |
| var WKTstr;
| |
| var title;
| |
| for (var page in request.query.pages) {
| |
| if (request.query.pages[page].revisions != undefined) {
| |
| WKTstr = request.query.pages[page].revisions[0]['*'].replace(/\<[\/]*includeonly\>/g, '');
| |
| var titleArr = request.query.pages[page].title.split('/');
| |
| title = titleArr[1];
| |
| var wkt = new OpenLayers.Format.WKT( { internalProjection: projectTo, externalProjection: epsg4326 } );
| |
| var feature = wkt.read(WKTstr);
| |
| feature.attributes.labelText = title;
| |
| feature.data.pageUrl = 'http://www.jarviwiki.fi/wiki/' + title;
| |
| merialueet.addFeatures(feature);
| |
| }
| |
| break;
| |
| }
| |
| divs--;
| |
| if ((divs < 1) && zoomTo) {
| |
| map.zoomToExtent(merialueet.getDataExtent());
| |
| }
| |
| }
| |
| | |
| for (var i in alueetArr) {
| |
| var searchStr = 'action=query&titles=';
| |
| searchStr += encodeURI('S_Data:Meri/' + alueetArr[i] + '/WKT');
| |
| searchStr += '&prop=revisions&rvlimit=1&rvprop=content&format=json';
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: queryApi,
| |
| data: searchStr,
| |
| success: gotWKT,
| |
| dataType: 'jsonp',
| |
| cache: true
| |
| });
| |
| }
| |
| | |
| map.addLayer(merialueet);
| |
| merialueet.data = new Object();
| |
| merialueet.data.z = z;
| |
| merialueet.data.popup = popup;
| |
| merialueet.addOptions({ popuppable: true, zIndex: z }, popup);
| |
| doLayers(map);
| |
| }
| |
| | |
| function jwAddKmlLayerX(map, type, queryFor, z, visibility, lang) {
| |
| | |
| var layer;
| |
| var url;
| |
| var name;
| |
|
| |
| switch (type) {
| |
| case 'levävahtiSinilevä':
| |
| name = 'Levävahti';
| |
| url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=sinileva';
| |
| break;
| |
| case 'levävahtiRakkolevä':
| |
| name = 'Levävahti';
| |
| url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=rakkoleva';
| |
| break;
| |
| }
| |
| | |
| layer = new OpenLayers.Layer.Vector(name, {
| |
| strategies: [new OpenLayers.Strategy.Fixed()],
| |
| protocol: new OpenLayers.Protocol.HTTP({
| |
| url: url,
| |
| format: new OpenLayers.Format.KML({
| |
| extractStyles: true,
| |
| extractAttributes: true,
| |
| maxDepth: 2,
| |
| 'internalProjection': projectTo,
| |
| 'externalProjection': epsg4326
| |
| })
| |
| })
| |
| })
| |
| | |
|
| |
| //Add a selector control to the kmllayer with popup functions
| |
| var controls = {
| |
| selector: new OpenLayers.Control.SelectFeature(layer, { onSelect: createPopup, onUnselect: destroyPopup })
| |
| };
| |
|
| |
| function createPopup(feature) {
| |
| //console.log('asdf');
| |
| feature.popup = new OpenLayers.Popup.FramedCloud("pop",
| |
| feature.geometry.getBounds().getCenterLonLat(),
| |
| null,
| |
| '<div class="markerContent">'+feature.attributes.description+'</div>',
| |
| null,
| |
| true,
| |
| function() { controls['selector'].unselectAll(); }
| |
| );
| |
| //feature.popup.closeOnMove = true;
| |
| map.addPopup(feature.popup);
| |
| }
| |
| | |
| function destroyPopup(feature) {
| |
| feature.popup.destroy();
| |
| feature.popup = null;
| |
| }
| |
| | |
| map.addControl(controls['selector']);
| |
| controls['selector'].activate();
| |
|
| |
| //map.setLayerIndex(layer, z);
| |
| layer.events.fallThrough = true;
| |
| map.addLayer(layer);
| |
| layer.events.fallThrough = true;
| |
| layer.setVisibility(visibility);
| |
|
| |
|
| |
| }
| |
| | |
| | |
| function jwAddKmlLayer(map, type, queryFor, z, visibility, lang) {
| |
| | |
| var layer;
| |
| var url;
| |
| var name;
| |
|
| |
| switch (type) {
| |
| case 'levävahtiSinilevä':
| |
| name = 'Levävahti';
| |
| url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=sinileva';
| |
| break;
| |
| case 'levävahtiRakkolevä':
| |
| name = 'Levävahti';
| |
| url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=rakkoleva';
| |
| break;
| |
| }
| |
| | |
| layer = new OpenLayers.Layer.Vector(name, {
| |
| strategies: [new OpenLayers.Strategy.Fixed()],
| |
| protocol: new OpenLayers.Protocol.HTTP({
| |
| url: url,
| |
| format: new OpenLayers.Format.KML({
| |
| extractStyles: true,
| |
| extractAttributes: true,
| |
| maxDepth: 2,
| |
| 'internalProjection': projectTo,
| |
| 'externalProjection': epsg4326
| |
| })
| |
| })
| |
| })
| |
| | |
| //map.setLayerIndex(layer, z);
| |
| map.addLayer(layer);
| |
| layer.setVisibility(visibility);
| |
| layer.events.fallThrough = true;
| |
| }
| |
| | |
| function jwAddExternalLayer(map, type, queryFor, z, visibility, lang, addToLr) {
| |
| | |
| if (addToLr == undefined) { addToLr = ''; }
| |
| | |
| var layer;
| |
| var queryArr;
| |
| if ( typeof queryFor === 'string' ) {
| |
| queryArr = new Array(queryFor);
| |
| } else {
| |
| queryArr = queryFor;
| |
| }
| |
| | |
| var queryStr = '';
| |
| var queryStr2 = '';
| |
| var queryStrLike = '';
| |
| var queryStrLike2 = '';
| |
|
| |
| var queryStrVpd = '';
| |
| var queryStrJnum = '';
| |
| var queryStrShed = '';
| |
| var queryStrBasin = '';
| |
| var queryStrVpd2 = '';
| |
| var queryStrJnum2 = '';
| |
| var queryStrShed2 = '';
| |
| var queryStrBasin2 = '';
| |
|
| |
| if (queryArr.length == 0) {
| |
| queryStrBasin = "PaajakoTunnus+LIKE+%27%25%27";
| |
| queryStrBasin2 = "PaajakoTunnus LIKE '%'";
| |
| //queryStrLike = "VPD2jarvi+LIKE+%27%25%27";
| |
| //queryStrLike2 = "VPD2jarvi LIKE '%'";
| |
| } else {
| |
| for (i=0; i < queryArr.length; i++) {
| |
| queryStr += '+OR+XXX+%3D+%27' + queryArr[i] + '%27';
| |
| queryStr2 += " OR XXX = '" + queryArr[i] + "'";
| |
| queryStrLike += '+OR+XXX+LIKE+%27' + queryArr[i] + '%25%27';
| |
| queryStrLike2 += " OR XXX LIKE '" + queryArr[i] + "%'";
| |
|
| |
| queryStrVpd += '+OR+VPDTunnus+LIKE+%27' + queryArr[i] + '%25%27';
| |
| queryStrJnum += '+OR+JarviTunnus+%3D+%27' + queryArr[i] + '%27';
| |
| //queryStrShed += '+OR+Jako3Tunnus+%3D+%27' + queryArr[i].substring(0,6) + '%27';
| |
| queryStrShed += '+OR+Jako3Tunnus+LIKE+%27' + queryArr[i] + '%25%27';
| |
| queryStrBasin += '+OR+PaajakoTunnus+%3D+%27' + queryArr[i].substring(0,6) + '%27';
| |
|
| |
| queryStrVpd2 += " OR VPDTunnus LIKE '" + queryArr[i] + "%'";
| |
| queryStrJnum2 += " OR JarviTunnus = '" + queryArr[i] + "'";
| |
| //queryStrShed2 += " OR Jako3Tunnus = '" + queryArr[i].substring(0,6) + "'";
| |
| queryStrShed2 += " OR Jako3Tunnus LIKE '" + queryArr[i] + "%'";
| |
| queryStrBasin2 += " OR PaajakoTunnus = '" + queryArr[i].substring(0,6) + "'";
| |
| }
| |
| queryStr = queryStr.substring(4);
| |
| queryStr2 = queryStr2.substring(4);
| |
| queryStrLike = queryStrLike.substring(4);
| |
| queryStrLike2 = queryStrLike2.substring(4);
| |
|
| |
| queryStrVpd = queryStrVpd.substring(4);
| |
| queryStrJnum = queryStrJnum.substring(4); //encodeURI(queryStrJnum.substring(4));
| |
| queryStrShed = queryStrShed.substring(4); //encodeURI(queryStrShed.substring(4));
| |
| queryStrBasin = queryStrBasin.substring(4); //encodeURI(queryStrBasin.substring(4));
| |
| queryStrVpd2 = queryStrVpd2.substring(4);
| |
| queryStrJnum2 = queryStrJnum2.substring(4);
| |
| queryStrShed2 = queryStrShed2.substring(4);
| |
| queryStrBasin2 = queryStrBasin2.substring(4);
| |
| }
| |
|
| |
| switch (type) {
| |
| case 'hyvinkaa':
| |
| //queryStr = queryStr.split('XXX').join('VPDTunnus');
| |
| //queryStr2 = queryStr2.split('XXX').join('VPDTunnus');
| |
| //jQuery.ajax({
| |
| // type: 'GET',
| |
| // url: 'http://kartta.hyvinkaa.fi/ows/ows.ashx',
| |
| // data: '&where=' + queryStr + '&returnCountOnly=true&f=pjson',
| |
| // success: function(request) {
| |
| // if (request.count != 0) {
| |
| //var epsg4326; var mapProjStr = "3857"; var projectTo;
| |
| | |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| 'Hyvinkää',
| |
| 'http://kartta.hyvinkaa.fi/ows/ows.ashx',
| |
| { layers: 'show:0', version: '1.1.1', crs: '3879', transparent: true},
| |
| { isBaseLayer: false, opacity: 0.5, attribution: 'Attribution' }
| |
| );
| |
| // layer.setLayerFilter(3, queryStr2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| // }
| |
| // },
| |
| // dataType: 'jsonp'
| |
| //});
| |
| break;
| |
| case 'iQwtr':
| |
| queryStr = queryStrLike.split('XXX').join('VPD2jarvi');
| |
| queryStr2 = queryStrLike2.split('XXX').join('VPD2jarvi');
| |
| //console.log('http://paikkatieto.ymparisto.fi/arcgis/rest/services/iQwtr/VPD2Jarvi_statistics/MapServer/0/query' + '?&where=' + queryStr + '&returnCountOnly=true&f=pjson');
| |
| jQuery.ajax({
| |
| type: 'POST',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/iQwtr/VPD2Jarvi_statistics/MapServer/0/query',
| |
| data: '&where=' + queryStr + '&returnCountOnly=true&f=pjson',
| |
| success: function(request) {
| |
| //console.log(request);
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| 'iQwtr-sameusluokka',
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/iQwtr/VPD2Jarvi_statistics/MapServer/export',
| |
| { layers: 'show:0', version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 0.8, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| //console.log(queryStr2);
| |
| layer.setLayerFilter(0, queryStr2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| break;
| |
| case 'vpdRannikko':
| |
| queryStr = queryStr.split('XXX').join('VPDTunnus');
| |
| queryStr2 = queryStr2.split('XXX').join('VPDTunnus');
| |
| jQuery.ajax({
| |
| type: 'POST',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/3/query',
| |
| data: '&where=' + queryStr + '&returnCountOnly=true&f=pjson',
| |
| success: function(request) {
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| JwMapLabels('vpdRannikko', lang) + addToLr,
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/export',
| |
| { layers: 'show:3', version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| layer.setLayerFilter(3, queryStr2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| break;
| |
| case 'riverBasin':
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/5/query',
| |
| data: '&where=' + queryStrBasin + '&returnCountOnly=false&f=pjson&outFields=Nimi',
| |
| success: function(request) {
| |
| //console.log(request);
| |
| //console.log('//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/5/query' + '&where=' + queryStrBasin + '&returnCountOnly=false&f=pjson&outFields=Nimi');
| |
| if (queryArr.length == 1) {
| |
| lrName = request.features[0].attributes.Nimi;
| |
| } else {
| |
| lrName = JwMapLabels('riverBasin', lang);
| |
| }
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| lrName,
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/export',
| |
| { layers: 'show:5', version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| console.log(queryStrBasin2);
| |
| //layer.setLayerFilter(5, queryStrBasin2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| break;
| |
| case 'lakeBorder':
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/2/query',
| |
| data: '&where=' + queryStrVpd + '&returnCountOnly=true&f=pjson',
| |
| success: function(request) {
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| JwMapLabels('lakeBorder', lang),
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/export',
| |
| { layers: 'show:2', version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| layer.setLayerFilter(2, queryStrVpd2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| break;
| |
| case 'lakeBorder2':
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/SYKE/' + 'SYKE_Rantaviiva/MapServer/3/query',
| |
| data: '&where=' + queryStrJnum + '&returnCountOnly=true&f=pjson',
| |
| success: function(request) {
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| JwMapLabels('lakeBorder', lang),
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/SYKE/' + 'SYKE_Rantaviiva/MapServer/export',
| |
| { layers: 'show:3', version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| layer.setLayerFilter(3, queryStrJnum2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| break;
| |
| case 'depthPlot':
| |
| ////////////////// Syvyyskäyrät
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/3/query',
| |
| data: '&where=' + queryStrJnum + '&returnCountOnly=true&f=pjson',
| |
| success: function(request) {
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| JwMapLabels('depthPlot', lang),
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/export',
| |
| { layers: "show:3", version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 0.8, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| layer.setLayerFilter(3, queryStrJnum2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| /////////////////////
| |
| break;
| |
| case 'deepestPoint':
| |
| | |
| /////////////// Syvin kohta
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/1/query',
| |
| data: '&where=' + queryStrJnum + '&returnCountOnly=true&f=pjson',
| |
| success: function(request) {
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| JwMapLabels('deepestPoint', lang),
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/export',
| |
| { layers: "show:1", version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 1.0, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| layer.setLayerFilter(1, queryStrJnum2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| /////////////////////
| |
| break;
| |
| case 'watershed':
| |
| //console.log(queryStrShed);
| |
| //console.log(queryStrShed2);
| |
| ///////////////////// Vesistöalue
| |
| jQuery.ajax({
| |
| type: 'GET',
| |
| url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/4/query',
| |
| data: '&where=' + queryStrShed + '&returnCountOnly=true&f=pjson',
| |
| success: function(request) {
| |
| if (request.count != 0) {
| |
| layer = new OpenLayers.Layer.ArcGIS93Rest(
| |
| JwMapLabels('watershed', lang),
| |
| '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/export',
| |
| { layers: 'show:4', version: '1.3.0', crs: mapProjStr, transparent: true},
| |
| { isBaseLayer: false, opacity: 0.8, attribution: JwMapLabels('yhaAttr', lang) }
| |
| );
| |
| layer.setLayerFilter(4, queryStrShed2);
| |
| map.addLayer(layer);
| |
| map.setLayerIndex(layer, z);
| |
| layer.setVisibility(visibility);
| |
|
| |
| }
| |
| },
| |
| dataType: 'jsonp'
| |
| });
| |
| /////////////////////
| |
| break;
| |
| }
| |
| return layer;
| |
| }
| |
| | |
| | |
| function jwAddControlDragPan(map) {
| |
| | |
| }
| |
| | |
| function jwAddControlDragPanX(map) {
| |
| | |
| var dragPanBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_TOGGLE,
| |
| displayClass: 'olControlDragPanBtn ',
| |
| title: 'Drag the map',
| |
| eventListeners: {
| |
| 'activate' : dragPanActivate,
| |
| 'deactivate': dragPanDeactivate
| |
| }
| |
| });
| |
| | |
| var dragPanPanel = new OpenLayers.Control.Panel({
| |
| displayClass: 'olControlDragPan',
| |
| createControlMarkup: function(control) {
| |
| var button = document.createElement('div');
| |
| var bg = document.createElement('div');
| |
| bg.className = 'olButtonBg';
| |
| button.appendChild(bg);
| |
| var icon = document.createElement('div');
| |
| icon.className = 'olButtonIcon';
| |
| button.appendChild(icon);
| |
| return button;
| |
| }
| |
| });
| |
| | |
| dragPanPanel.addControls([ dragPanBtn ]);
| |
| var dragPan = new OpenLayers.Control.Navigation({ autoActivate: false });
| |
| | |
| map.addControl(dragPan);
| |
| map.addControl( dragPanPanel );
| |
| | |
| function dragPanActivate() { dragPan.activate(); }
| |
| function dragPanDeactivate() { dragPan.deactivate(); }
| |
|
| |
| }
| |
| | |
| function jwAddControlFullscreen(map, locate) {
| |
| | |
| if (locate == undefined) { locate = 0; }
| |
| | |
| var fullscreenBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_TOGGLE,
| |
| displayClass: 'olControlFullscreenBtn ',
| |
| title: 'Fullscreen',
| |
| eventListeners: {
| |
| 'activate' : enterFullscreen,
| |
| 'deactivate': exitFullscreen
| |
| }
| |
| });
| |
| | |
| var geolocateBtn = new OpenLayers.Control.Button({
| |
| type: OpenLayers.Control.TYPE_TOGGLE,
| |
| displayClass: 'olControlGeolocateBtn ',
| |
| title: 'Show my location',
| |
| eventListeners: {
| |
| 'activate' : startGeolocator,
| |
| 'deactivate': endGeolocator
| |
| }
| |
| });
| |
| | |
| var fullscreenPanel = new OpenLayers.Control.Panel({
| |
| displayClass: 'olControlFullscreen',
| |
| createControlMarkup: function(control) {
| |
| var button = document.createElement('div');
| |
| var bg = document.createElement('div');
| |
| bg.className = 'olButtonBg';
| |
| button.appendChild(bg);
| |
| var icon = document.createElement('div');
| |
| icon.className = 'olButtonIcon';
| |
| button.appendChild(icon);
| |
| return button;
| |
| }
| |
| });
| |
| | |
| fullscreenPanel.addControls( [geolocateBtn, fullscreenBtn] );
| |
| | |
| map.addControl(fullscreenPanel);
| |
| | |
| function fullscreenToggle() {
| |
| | |
| if (jQuery(map.div).css('position') == 'fixed') {
| |
| exitFullscreen();
| |
| } else {
| |
| enterFullscreen();
| |
| }
| |
| }
| |
| | |
| function enterFullscreen() {
| |
| orgMapHeight = jQuery(map.div).height();
| |
| orgZindex = jQuery(map.div).css("zIndex");
| |
| jQuery(map.div).css({
| |
| position: 'fixed',
| |
| top: 0,
| |
| left: 0,
| |
| bottom: 0,
| |
| right: 0,
| |
| zIndex: 100000,
| |
| height: jQuery(window).height()
| |
| });
| |
| //dragPanBtn.activate();
| |
| | |
| map.updateSize();
| |
| document.body.style.overflow = 'hidden';
| |
| }
| |
| | |
| function exitFullscreen() {
| |
| jQuery(map.div).css({
| |
| position: 'static',
| |
| zIndex: orgZindex,
| |
| height: orgMapHeight.toString() + 'px'
| |
| });
| |
| //dragPanBtn.deactivate();
| |
| | |
| map.updateSize();
| |
| document.body.style.overflow = 'auto';
| |
| }
| |
| | |
| jQuery(document).keyup(function(e) {
| |
| if (e.keyCode == 27) { // esc
| |
| fullscreenBtn.deactivate();
| |
| exitFullscreen();
| |
| | |
| } else if (e.keyCode == 70) { // f
| |
| //fullscreenToggle();
| |
| }
| |
| });
| |
| | |
| | |
| //Geolocator
| |
| | |
| var style = {
| |
| fillColor: '#000',
| |
| fillOpacity: 0.2,
| |
| strokeWidth: 0
| |
| };
| |
| | |
| var geolocator = new OpenLayers.Layer.Vector('', {'displayInLayerSwitcher': false} );
| |
| map.addLayer( geolocator );
| |
| | |
| var pulsate = function(feature) {
| |
| var point = feature.geometry.getCentroid(),
| |
| bounds = feature.geometry.getBounds(),
| |
| radius = Math.abs((bounds.right - bounds.left)/2),
| |
| count = 0,
| |
| grow = 'up';
| |
| | |
| var resize = function(){
| |
| if (count>16) {
| |
| clearInterval(window.resizeInterval);
| |
| }
| |
| var interval = radius * 0.03;
| |
| var ratio = interval/radius;
| |
| switch(count) {
| |
| case 4:
| |
| case 12:
| |
| grow = 'down'; break;
| |
| case 8:
| |
| grow = 'up'; break;
| |
| }
| |
| if (grow!=='up') {
| |
| ratio = - Math.abs(ratio);
| |
| }
| |
| feature.geometry.resize(1+ratio, point);
| |
| geolocator.drawFeature(feature);
| |
| count++;
| |
| };
| |
| window.resizeInterval = window.setInterval(resize, 50, point, radius);
| |
| };
| |
| | |
| var geolocate = new OpenLayers.Control.Geolocate({
| |
| bind: false,
| |
| geolocationOptions: {
| |
| enableHighAccuracy: true,
| |
| maximumAge: 0,
| |
| timeout: 7000
| |
| }
| |
| });
| |
| map.addControl(geolocate);
| |
| var firstGeolocation = true;
| |
| | |
| geolocate.events.register("locationupdated",geolocate,function(e) {
| |
| geolocator.removeAllFeatures();
| |
| var circle = new OpenLayers.Feature.Vector(
| |
| OpenLayers.Geometry.Polygon.createRegularPolygon(
| |
| new OpenLayers.Geometry.Point(e.point.x, e.point.y),
| |
| e.position.coords.accuracy/2,
| |
| 40,
| |
| 0
| |
| ),
| |
| {},
| |
| style
| |
| );
| |
| geolocator.addFeatures([
| |
| new OpenLayers.Feature.Vector(
| |
| e.point,
| |
| {},
| |
| {
| |
| externalGraphic: '//www.jarviwiki.fi/dynpm/ol/jw_ol_geolocator_24px.png',
| |
| graphicWidth: 24,
| |
| graphicHeight: 24,
| |
| graphicXOffset: -12,
| |
| graphicYOffset: -12
| |
| //graphicName: 'cross',
| |
| //strokeColor: '#990000',
| |
| //fillColor: '#990000',
| |
| //strokeWidth: 2,
| |
| //fillOpacity: 1,
| |
| //pointRadius: 10
| |
| }
| |
| ),
| |
| circle
| |
| ]);
| |
| if (firstGeolocation) {
| |
| //map.zoomToExtent(geolocator .getDataExtent());
| |
| map.panTo(geolocator.getDataExtent().getCenterLonLat());
| |
| pulsate(circle);
| |
| firstGeolocation = false;
| |
| this.bind = true;
| |
| }
| |
| });
| |
| geolocate.events.register("locationfailed",this,function() {
| |
| OpenLayers.Console.log('Location detection failed');
| |
| });
| |
| | |
| function startGeolocator() {
| |
| geolocator.removeAllFeatures();
| |
| geolocate.deactivate();
| |
| geolocate.watch = true;
| |
| firstGeolocation = true;
| |
| geolocate.activate();
| |
| };
| |
| | |
| function endGeolocator() {
| |
| geolocator.removeAllFeatures();
| |
| geolocate.deactivate();
| |
| geolocate.watch = false;
| |
| //firstGeolocation = true;
| |
| //geolocate.activate();
| |
| };
| |
|
| |
| if (locate == 1) {
| |
| //startGeolocator();
| |
| geolocateBtn.activate();
| |
| }
| |
| } | | } |
|
| |
|
Rivi 2 700: |
Rivi 158: |
| }; | | }; |
|
| |
|
| function JwMapLabels(labelId, lang) {
| | function hslToRgb(h, s, l){ |
| | |
| var labels = {
| |
| fi: { yhaAttr: '© <a href="http://wwwp2.ymparisto.fi/kayttoehdot.html">Ympäristöhallinnon paikkatietoaineistot</a>', osm: 'OpenStreetMap', osmAttr: '© <a href="http://openstreetmap.org/">OpenStreetMapin tekijät</a>', google: 'Google Maps', googleAttr: '© <a href="https://www.google.com/intl/fi_fi/help/terms_maps.html">Google</a>', mmlTausta: 'MML Taustakartta', mmlPerus: 'MML Peruskartta', mmlOrto: 'MML Ortokuvat', mmlAttr: '© <a href="http://www.maanmittauslaitos.fi/avoindata_lisenssi_versio1_20120501">Maanmittauslaitos</a>', lakeBorder: 'Järvi', watershed: 'Vesistöalue', depthPlot: 'Syvyyskäyrät', deepestPoint: 'Syvin kohta', riverBasin: 'Päävesistöt', vpdRannikko: 'Merialue' },
| |
| sv: { yhaAttr: '© <a href="http://wwwp2.ymparisto.fi/kayttoehdot.html">Ympäristöhallinnon paikkatietoaineistot</a>', osm: 'OpenStreetMap', osmAttr: '© <a href="http://openstreetmap.org/">OpenStreetMap bidragare</a>', google: 'Google Maps', googleAttr: '© <a href="https://www.google.com/intl/fi_fi/help/terms_maps.html">Google</a>', mmlTausta: 'LMV Baskarta', mmlPerus: 'LMV Grundkarta', mmlOrto: 'LMV Ortofoton', mmlAttr: '© <a href="http://www.maanmittauslaitos.fi/sv/Licens_till_avgiftsfria_datamaterial_version1_20120501">Lantmäteriverket</a>', lakeBorder: 'Sjön', watershed: 'Vattendragsområdet', depthPlot: 'Djupkonturerna', deepestPoint: 'Djupaste punkten', riverBasin: 'Huvudavrinningsområden', vpdRannikko: 'Sjöområdet' },
| |
| en: { yhaAttr: '© <a href="http://wwwp2.ymparisto.fi/kayttoehdot.html">Ympäristöhallinnon paikkatietoaineistot</a>', osm: 'OpenStreetMap', osmAttr: '© <a href="http://openstreetmap.org/">OpenStreetMap contributors</a>', google: 'Google Maps', googleAttr: '© <a href="https://www.google.com/intl/fi_fi/help/terms_maps.html">Google</a>', mmlTausta: 'NLS Basemap', mmlPerus: 'NLS Basic map', mmlOrto: 'NLS Orthophotos', mmlAttr: '© <a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">National Land Survey of Finland</a>', lakeBorder: 'The lake', watershed: 'Watershed', depthPlot: 'Depth plot', deepestPoint: 'Deepest point', riverBasin: 'Main river basins', vpdRannikko: 'Sea area' }
| |
| };
| |
| lang = lang && (lang in labels) ? lang : 'en';
| |
| return labels[lang][labelId];
| |
| }
| |
| | |
| | |
| function JwSiteLabels(labelId, lang) {
| |
| | |
| var labels = {
| |
| fi: { lakes: 'Järvet', sites: 'Paikat', curObs: 'Tuoreet havainnot', temp: 'Pintaveden lämpötila', ice: 'Jäätilanne', ice0: 'Ei jäätä', ice1: 'Jäätymässä', ice2: 'Pysyvä jääpeite alkoi', ice3: 'Pysyvä jääpeite', ice4: 'Jäänlähtö', ice5: 'Jäätön kausi alkoi', algal: 'Levätilanne', algal0: 'Ei levää', algal1: 'Hieman levää', algal2: 'Runsaasti levää', algal3: 'Erittäin runsaasti levää', jellys0: 'Ei meduusoja', jellys1: 'Vähän meduusoja', jellys2: 'Paljon meduusoja', manByUsr: 'Ylläpito: Tavallinen käyttäjä', manByExd: 'Ylläpito: Kokenut käyttäjä', manByExp: 'Ylläpito: Asiantuntija', manByAuth: 'Ylläpito: Viranomainen'},
| |
| sv: { lakes: 'Sjöar', sites: 'Platser', curObs: 'Aktuella observationer', temp: 'Ytvattentemperatur', ice: 'Issituationen', ice0: 'Ingen is', ice1: 'Isläggning på gång', ice2: 'Isläggningen', ice3: 'Istäcke', ice4: 'Islossning', ice5: 'Början av isfria säsongen', algal: 'Algsituationen', algal0: 'Inga alger', algal1: 'Lite alger', algal2: 'Rikligt med alger', algal3: 'Ytterst rikligt med alger', manByUsr: 'Upprätthållning: Vanlig användare', manByExd: 'Upprätthållning: Erfaren användare', manByExp: 'Upprätthållning: Expert', manByAuth: 'Upprätthållning: Myndighet'},
| |
| en: { lakes: 'Lakes', sites: 'Sites', curObs: 'Current observations', temp: 'Water temperature', ice: 'Ice conditions', ice0: 'No ice cover', ice1: 'Freezing', ice2: 'Beginning oc ice covered season', ice3: 'Permanent ice cover', ice4: 'Ice break-up', ice5: 'Beginning of ice-free season', algal: 'Algal blooms', algal0: 'No algae', algal1: 'Some algae', algal2: 'Abundant with algae', algal3: 'Very abundant with algae', manByUsr: 'Managed by: Ordinary user', manByExd: 'Managed by: Experienced user', manByExp: 'Managed by: Expert', manByAuth: 'Managed by: Authority' }
| |
| };
| |
| lang = lang && (lang in labels) ? lang : 'en';
| |
| return labels[lang][labelId];
| |
| }
| |
| | |
| function hslToRgb(h, s, l){
| |
| /** | | /** |
| * Converts an HSL color value to RGB. Conversion formula | | * Converts an HSL color value to RGB. Conversion formula |
Rivi 2 758: |
Rivi 193: |
| return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; | | return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; |
| } | | } |
|
| |
|
| |
| var jwResize = function() {
| |
| jQuery('.autosize').each(function() {
| |
| jQuery ( this ).width(jQuery ( this ).parents('.autoresizer').width() - 12 );
| |
| });
| |
| }
| |
|
| |
| jQuery(window).resize( function() {
| |
| jwResize();
| |
| });
| |
|
| |
| jQuery(document).ready(function() {
| |
| jwResize();
| |
| });
| |