-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeuerwehr.js
More file actions
106 lines (97 loc) · 2.72 KB
/
feuerwehr.js
File metadata and controls
106 lines (97 loc) · 2.72 KB
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
function getFeuerwehr(featureLayer,featureLayerC){
featureLayer.clearLayers();
if(map.getZoom() < 12 || (!$('#layer_fire_station').is(':checked') && !$('#layer_fire_station_coverage').is(':checked'))){
featureLayerC.setOpacity(0);
return;
}
var nodes = {};
var ways = {};
var relations = {};
//var url = 'http://overpass.osm.rambler.ru/cgi/interpreter?data=';
var url = 'http://overpass-api.de/api/interpreter?data=';
var query = '[out:json];(node(BBOX)TAGS;way(BBOX)TAGS;relation(BBOX)TAGS;);out body;>;out skel;'.replace(/(BBOX)/g, map.getBounds().toOverpassBBoxString()).replace(/TAGS/g, '[amenity=fire_station]');
var overpass_query = url + query;
$.getJSON(
overpass_query,
function(data, textStatus){
$.each(
data.elements,
function(index,obj){
switch(obj.type){
case 'node':
nodes[obj.id] = obj;
break;
case 'way':
ways[obj.id] = obj;
break;
case 'relation':
relations[obj.id] = obj;
break;
default:
alert('ERROR');
}
}
);
}
).complete(function(){
var objects =
{
'nodes': nodes,
'ways': ways,
'relations': relations
}
featureLayer.clearLayers();
getFeuerwehrObjects(featureLayer,featureLayerC,objects.nodes,objects.ways);
});
}
function getFeuerwehrObjects(featureLayer,featureLayerC,nodes,ways){
featureLayerC.setOpacity(0.3);
var icon = getFeatureIcon('amenity=fire_station',16);
var show = ['addr:postcode','addr:city','addr:street','addr:housenumber','phone','email','website','fire_truk:klf','fire_truk:tlfa_2000'];
var data = new Array();
var dataid = 0;
for(var wayId in ways){
var obj = ways[wayId];
var way_nodes = [];
for(var i=0;i<obj.nodes.length;i++){
var nodeId = obj.nodes[i];
way_nodes[i] = new L.LatLng(nodes[nodeId].lat,nodes[nodeId].lon);
}
var point = new L.Polygon(way_nodes).getCenter();
if(obj.tags.name){
if(obj.tags.ref){
var title = obj.tags.name + ' (Ref: ' + obj.tags.ref + ')';
}else{
var title = obj.tags.name;
}
}else{
var title = 'Feuerwehr';
}
var tags = obj.tags;
data[dataid] = [point.lat,point.lng];
dataid++;
addMarkerFeature(featureLayer,point,icon,title,tags,show);
}
for(var nodeId in nodes){
var obj = nodes[nodeId];
if(obj.tags){
if(obj.tags.amenity == 'fire_station'){
var point = new L.LatLng(obj.lat,obj.lon);
if(obj.tags.name){
if(obj.tags.ref){
var title = obj.tags.name + ' (Ref: ' + obj.tags.ref + ')';
}else{
var title = obj.tags.name;
}
}else{
var title = 'Feuerwehr';
}
var tags = obj.tags;
data[dataid] = [point.lat,point.lng];
dataid++;
addMarkerFeature(featureLayer,point,icon,title,tags,show);
}
}
}
featureLayerC.setData(data);
}