<p>This isn't quite ready to go (waiting on an upstream <a href="https://github.com/Leaflet/Leaflet/pull/1846">Leaflet bug</a>), but I wanted to share and possibly get deployed for testing.</p>

<p><a href="https://f.cloud.github.com/assets/98601/765441/ff7a939a-e82b-11e2-8821-8874aa6c99ba.png" target="_blank"><img src="https://f.cloud.github.com/assets/98601/765441/ff7a939a-e82b-11e2-8821-8874aa6c99ba.png" alt="image" style="max-width:100%;"></a></p>

<p>Notable features:</p>

<ul>
<li>New layer chooser UI</li>
<li>New geolocation control</li>
<li>New share control (with room for "Include marker" checkbox and reorganization/consolidation with some of the "Export" features)</li>
<li>Consistent style with map UI on other pages (just the zoom buttons)</li>
</ul><p>Based on <a href="https://github.com/samanpwbb/osm-redesign/blob/gh-pages/renders/layer-switcher.png">work</a> by <a href="https://github.com/samanpwbb" class="user-mention">@samanpwbb</a>.</p>

<hr>

<h4>You can merge this Pull Request by running</h4>
<pre>  git pull https://github.com/osmlab/openstreetmap-website map-ui</pre>
<p>Or view, comment on, or merge it at:</p>
<p>  <a href='https://github.com/openstreetmap/openstreetmap-website/pull/328'>https://github.com/openstreetmap/openstreetmap-website/pull/328</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>Remove pan and zoom controls</li>
  <li>Basic framework for map UI</li>
  <li>Remove unused styles</li>
  <li>Add back basic zoom control</li>
  <li>Add leaflet-locate control, invisible currently.</li>
  <li>Remove permalink/add note links</li>
  <li>Add locate widget to map</li>
  <li>adding icons to sprite.</li>
  <li>Start layers pane</li>
  <li>Add share button to map</li>
  <li>generate short link kind of</li>
  <li>Prevent click propagation on ui panes</li>
  <li>Remove unnecessary abstraction around rectangles</li>
  <li>Start refactoring notes layer</li>
  <li>Clean up some of the map JS, reduce scope of globals</li>
  <li>Actually toggle note layer on click.</li>
  <li>Refactor mapLayers to create layers up front</li>
  <li>Add attrib</li>
  <li>Restore attribution on main map</li>
  <li>Start to refactor updatelinks</li>
  <li>More refactoring of map js</li>
  <li>Rename to L.OSM.Layers and continue implementation</li>
  <li>Even more map ui js refactor</li>
  <li>Use querystring, stop manually building urls</li>
  <li>Refactor forever</li>
  <li>Refactoring 4 life</li>
  <li>starting to cleanup+style map controls.</li>
  <li>Customize and style map zoom controls</li>
  <li>Work on layers UI</li>
  <li>Refactor layer persistence</li>
  <li>Scope map variable.</li>
  <li>Refactor out 'globals' from more functions</li>
  <li>Layers work</li>
  <li>Complete de-globalization of map</li>
  <li>Layers work</li>
  <li>Keep zoom buttons together</li>
  <li>Arrange and group map buttons</li>
  <li>Consistent JavaScript style</li>
  <li>Port map key to new UI</li>
  <li>Fix attribution width</li>
  <li>Fix locate button style</li>
  <li>Fix export</li>
  <li>Only one pane visible at a time</li>
  <li>Fix minimap event bindings</li>
  <li>Implement long URL option, toggling, and labeling for share</li>
  <li>Reuse styles for map-ui panel</li>
  <li>Add layers code to share link</li>
  <li>Focus share link by default</li>
  <li>Add clearer close action, refactor base layer code</li>
  <li>Add sprite and geolocate alternate color</li>
  <li>Fix add note</li>
  <li>Use custom zoom control everywhere</li>
  <li>Include current non-OSM.org hostname in share URL</li>
  <li>Move base layer UI above overlay layer UI</li>
  <li>Fix export tab bugs</li>
  <li>Use a radio button for base layers</li>
  <li>Fix zoom out button style on non-main page maps</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-0">Vendorfile</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-1">app/assets/images/sprite.png</a>
    (0)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-2">app/assets/images/sprite.svg</a>
    (224)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-3">app/assets/javascripts/application.js</a>
    (264)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-4">app/assets/javascripts/browse.js</a>
    (70)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-5">app/assets/javascripts/changeset.js</a>
    (14)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-6">app/assets/javascripts/diary_entry.js</a>
    (15)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-7">app/assets/javascripts/embed.js.erb</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-8">app/assets/javascripts/index.js</a>
    (242)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-9">app/assets/javascripts/index/browse.js</a>
    (36)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-10">app/assets/javascripts/index/export.js</a>
    (10)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-11">app/assets/javascripts/index/key.js</a>
    (34)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-12">app/assets/javascripts/index/notes.js.erb</a>
    (150)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-13">app/assets/javascripts/leaflet.extend.js.erb</a>
    (31)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-14">app/assets/javascripts/leaflet.key.js</a>
    (73)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-15">app/assets/javascripts/leaflet.layers.js</a>
    (165)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-16">app/assets/javascripts/leaflet.note.js</a>
    (19)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-17">app/assets/javascripts/leaflet.share.js</a>
    (85)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-18">app/assets/javascripts/leaflet.sidebar.js</a>
    (35)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-19">app/assets/javascripts/leaflet.zoom.js</a>
    (72)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-20">app/assets/javascripts/map.js.erb</a>
    (176)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-21">app/assets/javascripts/querystring.js</a>
    (71)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-22">app/assets/javascripts/templates/notes/new.jst.ejs</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-23">app/assets/javascripts/user.js</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-24">app/assets/stylesheets/common.css.scss</a>
    (145)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-25">app/assets/stylesheets/large.css</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-26">app/assets/stylesheets/leaflet-all.css.scss</a>
    (17)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-27">app/assets/stylesheets/leaflet.pan.css.scss</a>
    (41)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-28">app/assets/stylesheets/leaflet.zoom.css.scss</a>
    (56)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-29">app/views/layouts/site.html.erb</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-30">app/views/site/_potlatch2.html.erb</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-31">app/views/site/_search.html.erb</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-32">app/views/site/id.html.erb</a>
    (15)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-33">app/views/site/index.html.erb</a>
    (19)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-34">config/locales/en.yml</a>
    (21)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-35">vendor/assets/leaflet/leaflet.locate.js</a>
    (194)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-36">vendor/assets/leaflet/leaflet.pan.js</a>
    (52)
  </li>
  <li>
    <strong>D</strong>
    <a href="https://github.com/openstreetmap/openstreetmap-website/pull/328/files#diff-37">vendor/assets/leaflet/leaflet.zoom.js</a>
    (213)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/openstreetmap/openstreetmap-website/pull/328.patch'>https://github.com/openstreetmap/openstreetmap-website/pull/328.patch</a></li>
  <li><a href='https://github.com/openstreetmap/openstreetmap-website/pull/328.diff'>https://github.com/openstreetmap/openstreetmap-website/pull/328.diff</a></li>
</ul>