X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/d31fc7c2f5c0f43b9e65479e3f1690bdd0c2fb4a..d414ffc61a0f6505f1d06e89e8668fa5b49d607e:/app/assets/javascripts/index.js diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 5190277c9..525be7e52 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -48,26 +48,49 @@ $(document).ready(function () { code: "Q", keyid: "mapquest", name: I18n.t("javascripts.map.base.mapquest") + }), + new L.OSM.HOT({ + attribution: copyright + ". Tiles courtesy of Humanitarian OpenStreetMap Team", + code: "H", + keyid: "hot", + name: I18n.t("javascripts.map.base.hot") }) ]; - for (var i = layers.length - 1; i >= 0; i--) { - if (i === 0 || params.layers.indexOf(layers[i].options.code) >= 0) { - map.addLayer(layers[i]); - break; + function updateLayers(params) { + var layerParam = params.layers || "M"; + var layersAdded = ""; + + for (var i = layers.length - 1; i >= 0; i--) { + if (layerParam.indexOf(layers[i].options.code) >= 0) { + map.addLayer(layers[i]); + layersAdded = layersAdded + layers[i].options.code; + } else if (i == 0 && layersAdded == "") { + map.addLayer(layers[i]); + } else { + map.removeLayer(layers[i]); + } } } + updateLayers(params); + + $(window).on("hashchange", function () { + updateLayers(OSM.mapParams()); + }); + + map.on("baselayerchange", function (e) { + if (map.getZoom() > e.layer.options.maxZoom) { + map.setView(map.getCenter(), e.layer.options.maxZoom, { reset: true }); + } + }); + map.noteLayer = new L.LayerGroup(); map.noteLayer.options = {code: 'N'}; map.dataLayer = new L.OSM.DataLayer(null); map.dataLayer.options.code = 'D'; - $("#sidebar").on("opened closed", function () { - map.invalidateSize(); - }); - var position = $('html').attr('dir') === 'rtl' ? 'topleft' : 'topright'; L.OSM.zoom({position: position}) @@ -75,7 +98,10 @@ $(document).ready(function () { L.control.locate({ position: position, - title: I18n.t('javascripts.map.locate.title') + strings: { + title: I18n.t('javascripts.map.locate.title'), + popup: I18n.t('javascripts.map.locate.popup') + } }).addTo(map); var sidebar = L.OSM.sidebar('#map-ui') @@ -108,7 +134,32 @@ $(document).ready(function () { $('.leaflet-control .control-button').tooltip({placement: 'left', container: 'body'}); - map.on('moveend layeradd layerremove', updateLocation); + map.on('moveend layeradd layerremove', function() { + updatelinks( + map.getCenter().wrap(), + map.getZoom(), + map.getLayersCode(), + map._object); + + var expiry = new Date(); + expiry.setYear(expiry.getFullYear() + 10); + $.cookie("_osm_location", cookieContent(map), { expires: expiry }); + + // Trigger hash update on layer changes. + map.hash.onMapMove(); + }); + + if (OSM.PIWIK) { + map.on('layeradd', function (e) { + if (e.layer.options) { + var goal = OSM.PIWIK.goals[e.layer.options.keyid]; + + if (goal) { + $('body').trigger('piwikgoal', goal); + } + } + }); + } var marker = L.marker([0, 0], {icon: getUserIcon()}); @@ -120,14 +171,6 @@ $(document).ready(function () { } } - if (params.box) { - L.rectangle(params.box, { - weight: 2, - color: '#e90', - fillOpacity: 0 - }).addTo(map); - } - if (params.marker) { marker.setLatLng([params.mlat, params.mlon]).addTo(map); } @@ -155,22 +198,24 @@ $(document).ready(function () { remoteEditHandler(map.getBounds()); } + if (OSM.params().edit_help) { + $('#editanchor') + .removeAttr('title') + .tooltip({ + placement: 'bottom', + title: I18n.t('javascripts.edit_help') + }) + .tooltip('show'); + + $('body').one('click', function() { + $('#editanchor').tooltip('hide'); + }); + } + initializeSearch(map); initializeExport(map); initializeBrowse(map, params); initializeNotes(map, params); -}); -function updateLocation() { - updatelinks(this.getCenter().wrap(), - this.getZoom(), - this.getLayersCode(), - this.getBounds().wrap()); - - var expiry = new Date(); - expiry.setYear(expiry.getFullYear() + 10); - $.cookie("_osm_location", cookieContent(this), { expires: expiry }); - - // Trigger hash update on layer changes. - this.hash.onMapMove(); -} + if ('undefined' !== typeof initializeChangesets) initializeChangesets(map); +});