1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/* 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);
}
}
}
|