/* layers */ var default_pointer = "/media/images/default-pointer.png"; var view_projection = 'EPSG:3857'; var map_default_center = 'SRID=4326;POINT (2.4397 46.5528)'; var map_default_zoom = '7'; var source_osm = function(options){ return new ol.layer.Tile({ source: new ol.source.OSM() }); }; var default_map_layers = { 'osm': source_osm }; var get_layers = function(layers){ if (!layers){ layers = [{'type': 'osm', 'options': null}]; } var ol_layers = []; for (idx in layers){ var layer_attr = layers[idx]; ol_layers.push( default_map_layers[layer_attr['type']](layer_attr['options']) ); } return ol_layers; }; /* get markers */ var get_markers = function(points){ }; /* styles */ var get_style = function(feature){ properties = feature.getProperties(); console.log(properties); return new ol.style.Style({ image: new ol.style.Icon({ anchor: [17, 50], anchorXUnits: 'pixels', anchorYUnits: 'pixels', size: [35, 50], src: static_path + default_pointer }) }); }; /* display map */ var vector_source; var vector_layer; var center; var map; var map_view; var map_layers; var proj_options = { dataProjection:'EPSG:4326', featureProjection: view_projection } var geojson_format = new ol.format.GeoJSON(proj_options); var wkt_format = new ol.format.WKT(proj_options); var initialize_map = function(map_id, layers){ center = wkt_format.readGeometry(map_default_center).getCoordinates(); /* vector_source = new ol.source.Vector({ features: geojson_format.readFeatures(points) }); */ vector_source = new ol.source.Vector(); vector_layer = new ol.layer.Vector({ source: vector_source, style: get_style }); map_layers = get_layers(layers); map_layers.push(vector_layer); map_view = new ol.View({ projection: view_projection, center: ol.proj.fromLonLat([center[0], center[1]]), zoom: map_default_zoom }); map = new ol.Map({ target: map_id, layers: map_layers, view: map_view }); } var redraw_map = function(map_id, layers){ map.setTarget(null); map = null; initialize_map(map_id, layers); }; var display_map = function(map_id, points, layers){ if (map){ redraw_map(map_id, layers); } else { initialize_map(map_id, layers); } vector_source.clear(); vector_source.addFeatures(geojson_format.readFeatures(points)); map.updateSize(); if (points.features.length){ map_view.fit(vector_source.getExtent()); if (map_view.getZoom() > 12){ map_view.setZoom(12); } } }