]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/map.js.erb
6d26763f8986ab851f5b1b547a0e6e451a772f56
[rails.git] / app / assets / javascripts / map.js.erb
1 var objectLoader;
2
3 function getUserIcon(url) {
4   return L.icon({
5     iconUrl: url || <%= asset_path('marker-red.png').to_json %>,
6     iconSize: [25, 41],
7     iconAnchor: [12, 41],
8     popupAnchor: [1, -34],
9     shadowUrl: <%= asset_path('images/marker-shadow.png').to_json %>,
10     shadowSize: [41, 41]
11   });
12 }
13
14 function addObjectToMap(object, map, options) {
15   if (objectLoader) objectLoader.abort();
16   if (map.objectLayer) map.removeLayer(map.objectLayer);
17
18   objectLoader = $.ajax({
19     url: OSM.apiUrl(object),
20     dataType: "xml",
21     success: function (xml) {
22       map.objectLayer = new L.OSM.DataLayer(null, {
23         styles: {
24           node: options.style,
25           way: options.style,
26           area: options.style
27         }
28       });
29
30       map.objectLayer.interestingNode = function (node, ways, relations) {
31         if (object.type === "node") {
32           return true;
33         } else if (object.type === "relation") {
34           for (var i = 0; i < relations.length; i++)
35             if (relations[i].members.indexOf(node) != -1)
36               return true;
37         } else {
38           return false;
39         }
40       };
41
42       map.objectLayer.addData(xml);
43
44       if (options.zoom) map.fitBounds(map.objectLayer.getBounds());
45       if (options.callback) options.callback(map.objectLayer.getBounds());
46
47       map.objectLayer.addTo(map);
48     }
49   });
50 }