From: John Firebaugh Date: Mon, 10 Jun 2013 22:21:08 +0000 (-0700) Subject: Work on layers UI X-Git-Tag: live~4882^2~41 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/10c9ca81c788c5aa3cd7a66d9cdbaedc14def1bc?ds=sidebyside Work on layers UI --- diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 404119134..40fe11761 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -61,19 +61,25 @@ $(document).ready(function () { L.control.customZoom({position: 'topright'}) .addTo(map); - L.OSM.layers({position: 'topright', layers: layers}) - .addTo(map); + var uiPane = $('#map-ui')[0]; + + L.OSM.layers({ + position: 'topright', + layers: layers, + uiPane: uiPane + }).addTo(map); L.control.share({ - getUrl: getShortUrl + getUrl: getShortUrl, + uiPane: uiPane }).addTo(map); L.control.note({ - position: 'topright' + position: 'topright' }).addTo(map); L.control.locate({ - position: 'topright' + position: 'topright' }).addTo(map); L.control.scale().addTo(map); diff --git a/app/assets/javascripts/leaflet.layers.js b/app/assets/javascripts/leaflet.layers.js index 6c83f0c2f..ce0fcd9f3 100644 --- a/app/assets/javascripts/leaflet.layers.js +++ b/app/assets/javascripts/leaflet.layers.js @@ -2,6 +2,7 @@ L.OSM.Layers = L.Control.extend({ onAdd: function (map) { + this._map = map; this._initLayout(map); return this._container; }, @@ -14,12 +15,7 @@ L.OSM.Layers = L.Control.extend({ link.href = '#'; link.title = 'Layers'; - this._uiPane = L.DomUtil.create('div', 'leaflet-map-ui', map._container); - - L.DomEvent - .on(this._uiPane, 'click', L.DomEvent.stopPropagation) - .on(this._uiPane, 'click', L.DomEvent.preventDefault) - .on(this._uiPane, 'dblclick', L.DomEvent.preventDefault); + this._uiPane = this.options.uiPane; $(link).on('click', $.proxy(this.toggleLayers, this)); }, @@ -36,7 +32,32 @@ L.OSM.Layers = L.Control.extend({ } else { $(this._uiPane) .show() - .html(JST["templates/map/layers"]({layers: this.options.layers})); + .html(JST["templates/map/layers"]()); + + var list = $(this._uiPane).find('.base-layers ul'); + + var layers = this.options.layers; + for (var i = 0; i < layers.length; i++) { + var item = $('
  • ') + .appendTo(list); + + var div = $('
    ') + .appendTo(item); + + var map = L.map(div[0], {attributionControl: false, zoomControl: false}) + .setView(this._map.getCenter(), Math.max(this._map.getZoom() - 2, 0)) + .addLayer(new layers[i].layer.constructor); + + map.dragging.disable(); + map.touchZoom.disable(); + map.doubleClickZoom.disable(); + map.scrollWheelZoom.disable(); + + var label = $('') + .text(layers[i].name) + .appendTo(item); + } + controlContainer.css({paddingRight: '200px'}); } } diff --git a/app/assets/javascripts/leaflet.share.js b/app/assets/javascripts/leaflet.share.js index 7449fb6d7..f085bc0e6 100644 --- a/app/assets/javascripts/leaflet.share.js +++ b/app/assets/javascripts/leaflet.share.js @@ -16,12 +16,7 @@ L.Control.Share = L.Control.extend({ link.href = '#'; link.title = this.options.title; - this._uiPane = L.DomUtil.create('div', 'leaflet-map-ui', map._container); - - L.DomEvent - .on(this._uiPane, 'click', L.DomEvent.stopPropagation) - .on(this._uiPane, 'click', L.DomEvent.preventDefault) - .on(this._uiPane, 'dblclick', L.DomEvent.preventDefault); + this._uiPane = this.options.uiPane; var h2 = L.DomUtil.create('h2', '', this._uiPane); h2.innerHTML = I18n.t('javascripts.share.title'); diff --git a/app/assets/javascripts/templates/map/layers.jst.ejs b/app/assets/javascripts/templates/map/layers.jst.ejs index 66fa1f7ed..cbda1d696 100644 --- a/app/assets/javascripts/templates/map/layers.jst.ejs +++ b/app/assets/javascripts/templates/map/layers.jst.ejs @@ -7,8 +7,5 @@

    <%= I18n.t('javascripts.map.layers.base') %>

    diff --git a/app/assets/stylesheets/common.css.scss b/app/assets/stylesheets/common.css.scss index ba25591d3..dd29b813d 100644 --- a/app/assets/stylesheets/common.css.scss +++ b/app/assets/stylesheets/common.css.scss @@ -562,20 +562,18 @@ a.donate { margin: 10px; } -.leaflet-map-ui-layers { - box-shadow: 0 1px 7px rgba(0, 0, 0, 0.4); - background: #f8f8f9; - -webkit-border-radius: 8px; - border-radius: 8px; - background-position: 50% 50%; - background-repeat: no-repeat; - display: block; - width: 36px; - height: 36px; -} +#map-ui { + position: absolute; + display: none; + right: 0; + width: 200px; + height: 100%; + background: white; -.leaflet-control-layers-separator { - margin: 5px -10px !important; + .leaflet-container { + width: 100%; + height: 50px; + } } .leaflet-control-attribution { diff --git a/app/assets/stylesheets/leaflet-all.css.scss b/app/assets/stylesheets/leaflet-all.css.scss index 95f89bd2b..1f84b5754 100644 --- a/app/assets/stylesheets/leaflet-all.css.scss +++ b/app/assets/stylesheets/leaflet-all.css.scss @@ -1,7 +1,6 @@ /* *= require leaflet *= require leaflet.locationfilter - *= require map-ui */ /* Override to serve images through the asset pipeline. */ diff --git a/app/assets/stylesheets/map-ui.css.scss b/app/assets/stylesheets/map-ui.css.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/views/site/index.html.erb b/app/views/site/index.html.erb index 9f3ff7d85..478669529 100644 --- a/app/views/site/index.html.erb +++ b/app/views/site/index.html.erb @@ -20,6 +20,9 @@
    +
    +
    +