//= require augment
//= require leaflet
//= require leaflet.osm
+//= require leaflet.extend
//= require leaflet.locationfilter
//= require i18n/translations
//= require oauth
var minzoom = $(link).data("minzoom");
if (minzoom) {
var name = link.id.replace(/anchor$/, "");
-
$(link).off("click.minzoom");
-
if (zoom >= minzoom) {
$(link).attr("title", I18n.t("javascripts.site." + name + "_tooltip"))
.removeClass("disabled");
$("#linkloader").load(function () { loaded = true; });
- if (select) {
- $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" +
- querystring.stringify({
- left: left,
- top: top,
- right: right,
- bottom: bottom,
- select: select
- }));
- } else {
- $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" + querystring.stringify({
- left: left,
- top: top,
- right: right,
- bottom: bottom
- }));
- }
+ var query = {
+ left: left,
+ top: top,
+ right: right,
+ bottom: bottom,
+ select: select
+ };
+
+ if (select) query.select = select;
+ $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?" +
+ querystring.stringify(query));
setTimeout(function () {
if (!loaded) alert(I18n.t('site.index.remote_failed'));
L.latLng(args.bbox[3], args.bbox[2])])
} else {
map.fitWorld();
- }
+ }
};
layerCode: "M",
name: I18n.t("javascripts.map.base.standard")
}, {
- layer: new L.OSM.CycleMap( {
+ layer: new L.OSM.CycleMap({
attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
}),
keyid: "cyclemap",
--- /dev/null
+L.extend(L.LatLngBounds.prototype, {
+ getSize: function () {
+ return (this._northEast.lat - this._southWest.lat) *
+ (this._northEast.lng - this._southWest.lng);
+ },
+
+ wrap: function () {
+ return new L.LatLngBounds(this._southWest.wrap(), this._northEast.wrap());
+ }
+});
+
+L.extend(L.Map.prototype, {
+ getLayersCode: function() {
+ var layerConfig = '';
+ for (var i in this._layers) { // TODO: map.eachLayer
+ var layer = this._layers[i];
+ if (layer.options && layer.options.code) {
+ layerConfig += layer.options.code;
+ }
+ }
+ return layerConfig;
+ },
+ getMapBaseLayerId: function() {
+ for (var i in this._layers) { // TODO: map.eachLayer
+ var layer = this._layers[i];
+ if (layer.options && layer.options.keyid) return layer.options.keyid;
+ }
+ }
+});
+
+L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
-// Leaflet extensions
-L.extend(L.LatLngBounds.prototype, {
- getSize: function () {
- return (this._northEast.lat - this._southWest.lat) *
- (this._northEast.lng - this._southWest.lng);
- },
-
- wrap: function () {
- return new L.LatLngBounds(this._southWest.wrap(), this._northEast.wrap());
- }
-});
-
-L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
-
-var objectLayer;
var objectLoader;
function getUserIcon(url) {
function addObjectToMap(object, map, options) {
if (objectLoader) objectLoader.abort();
- if (objectLayer) map.removeLayer(objectLayer);
+ if (map.objectLayer) map.removeLayer(map.objectLayer);
objectLoader = $.ajax({
url: OSM.apiUrl(object),
dataType: "xml",
success: function (xml) {
- objectLayer = new L.OSM.DataLayer(null, {
+ map.objectLayer = new L.OSM.DataLayer(null, {
styles: {
node: options.style,
way: options.style,
}
});
- objectLayer.interestingNode = function (node, ways, relations) {
+ map.objectLayer.interestingNode = function (node, ways, relations) {
if (object.type === "node") {
return true;
} else if (object.type === "relation") {
}
};
- objectLayer.addData(xml);
+ map.objectLayer.addData(xml);
- if (options.zoom) map.fitBounds(objectLayer.getBounds());
- if (options.callback) options.callback(objectLayer.getBounds());
+ if (options.zoom) map.fitBounds(map.objectLayer.getBounds());
+ if (options.callback) options.callback(map.objectLayer.getBounds());
- objectLayer.addTo(map);
+ map.objectLayer.addTo(map);
}
});
}