├── .gitignore ├── Gemfile ├── LICENSE.md ├── README.md ├── Rakefile ├── app └── assets │ ├── images │ ├── icons-000000@2x.png │ ├── icons-ffffff@2x.png │ ├── layers-2x.png │ ├── layers.png │ ├── marker-icon-2x.png │ ├── marker-icon.png │ └── marker-shadow.png │ ├── javascripts │ └── mapbox.js │ └── stylesheets │ └── mapbox.scss ├── lib ├── mapbox-rails.rb └── mapbox-rails │ ├── engine.rb │ ├── railtie.rb │ ├── remote_resource_loader.rb │ └── version.rb └── mapbox-rails.gemspec /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | .bundle 4 | .config 5 | .yardoc 6 | Gemfile.lock 7 | InstalledFiles 8 | _yardoc 9 | coverage 10 | doc/ 11 | lib/bundler/man 12 | pkg 13 | rdoc 14 | spec/reports 15 | test/tmp 16 | test/version_tmp 17 | tmp 18 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in mapbox-rails.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MapBox.js 2 | 3 | Copyright (c), MapBox 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without modification, 7 | are permitted provided that the following conditions are met: 8 | 9 | - Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | - Redistributions in binary form must reproduce the above copyright notice, this 12 | list of conditions and the following disclaimer in the documentation and/or 13 | other materials provided with the distribution. 14 | - Neither the name "Development Seed" nor the names of its contributors may be 15 | used to endorse or promote products derived from this software without 16 | specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | 29 | # Contains parts of L.UTFGrid 30 | 31 | Copyright 2012 David Leaver 32 | 33 | Permission is hereby granted, free of charge, to any person obtaining 34 | a copy of this software and associated documentation files (the 35 | "Software"), to deal in the Software without restriction, including 36 | without limitation the rights to use, copy, modify, merge, publish, 37 | distribute, sublicense, and/or sell copies of the Software, and to 38 | permit persons to whom the Software is furnished to do so, subject to 39 | the following conditions: 40 | 41 | The above copyright notice and this permission notice shall be 42 | included in all copies or substantial portions of the Software. 43 | 44 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 45 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 46 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 47 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 48 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 49 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 50 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MapBox.js for rails asset pipeline 2 | 3 | [MapBox.js](https://github.com/mapbox/mapbox.js) is a library integrating MapBox maps. 4 | 5 | The `mapbox-rails` gem integrates the `Chosen` with the Rails asset pipeline. 6 | 7 | ## Usage 8 | 9 | ### Install mapbox-rails gem 10 | 11 | Include `mapbox-rails` in Gemefile 12 | 13 | ```ruby 14 | gem 'mapbox-rails' 15 | ``` 16 | 17 | Then run `bundle install` 18 | 19 | ### Include mapbox javascript assets 20 | 21 | Add to your `app/assets/javascripts/application.js` 22 | 23 | ```coffeescript 24 | //= require mapbox.js 25 | ``` 26 | 27 | ### Include mapbox stylesheet assets 28 | 29 | Add to your `app/assets/stylesheets/application.css` 30 | 31 | ```scss 32 | *= require mapbox 33 | ``` 34 | 35 | ### Enable mapbox 36 | 37 | ```html 38 |
39 | 42 | ``` 43 | 44 | ## Gem maintenance 45 | 46 | Maintain `mapbox-rails` gem with `Rake` commands. 47 | 48 | Update origin mapbox source files. 49 | 50 | rake update-mapbox 51 | 52 | Publish gem. 53 | 54 | rake release 55 | 56 | ## License 57 | 58 | Portions of this code use the BSD and the MIT license. See LICENSE.md for more information. 59 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env rake 2 | require 'bundler/gem_tasks' 3 | require File.expand_path('../lib/mapbox-rails/remote_resource_loader', __FILE__) 4 | 5 | desc "Update with MapBox's Mapbox.js Library" 6 | task 'update-mapbox' do |task, args| 7 | remote = args['remote'] || 'https://github.com/mapbox/mapbox.js' 8 | branch = args['branch'] || 'mb-pages' 9 | loader = RemoteResourceLoader.new 10 | loader.fetch 11 | loader.convert 12 | loader.cleanup 13 | end 14 | -------------------------------------------------------------------------------- /app/assets/images/icons-000000@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aai/mapbox-rails/3c99755754eff0eb72d7614b47439a85a642bd36/app/assets/images/icons-000000@2x.png -------------------------------------------------------------------------------- /app/assets/images/icons-ffffff@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aai/mapbox-rails/3c99755754eff0eb72d7614b47439a85a642bd36/app/assets/images/icons-ffffff@2x.png -------------------------------------------------------------------------------- /app/assets/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aai/mapbox-rails/3c99755754eff0eb72d7614b47439a85a642bd36/app/assets/images/layers-2x.png -------------------------------------------------------------------------------- /app/assets/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aai/mapbox-rails/3c99755754eff0eb72d7614b47439a85a642bd36/app/assets/images/layers.png -------------------------------------------------------------------------------- /app/assets/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aai/mapbox-rails/3c99755754eff0eb72d7614b47439a85a642bd36/app/assets/images/marker-icon-2x.png -------------------------------------------------------------------------------- /app/assets/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aai/mapbox-rails/3c99755754eff0eb72d7614b47439a85a642bd36/app/assets/images/marker-icon.png -------------------------------------------------------------------------------- /app/assets/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aai/mapbox-rails/3c99755754eff0eb72d7614b47439a85a642bd36/app/assets/images/marker-shadow.png -------------------------------------------------------------------------------- /app/assets/stylesheets/mapbox.scss: -------------------------------------------------------------------------------- 1 | .leaflet-container { 2 | background: #fff; 3 | font: 12px/20px 'Helvetica Neue',Arial,Helvetica,sans-serif; 4 | color: #404040; 5 | color: rgba(0, 0, 0, 0.75); 6 | outline: 0; 7 | overflow: hidden; 8 | -ms-touch-action: none; 9 | 10 | *, :after, :before { 11 | -webkit-box-sizing: border-box; 12 | -moz-box-sizing: border-box; 13 | box-sizing: border-box; 14 | } 15 | 16 | h1, h2, h3, h4, h5, h6, p { 17 | font-size: 15px; 18 | line-height: 20px; 19 | margin: 0 0 10px; 20 | } 21 | 22 | .marker-description img { 23 | margin-bottom: 10px; 24 | } 25 | 26 | a { 27 | color: #3887BE; 28 | font-weight: 400; 29 | text-decoration: none; 30 | 31 | &:hover { 32 | color: #63b6e5; 33 | } 34 | } 35 | 36 | &.dark a { 37 | color: #63b6e5; 38 | 39 | &:hover { 40 | color: #8fcaec; 41 | } 42 | } 43 | 44 | .mapbox-button, &.dark .mapbox-button { 45 | background-color: #3887be; 46 | display: inline-block; 47 | height: 40px; 48 | line-height: 40px; 49 | text-decoration: none; 50 | color: #fff; 51 | font-size: 12px; 52 | white-space: nowrap; 53 | text-overflow: ellipsis; 54 | } 55 | 56 | .mapbox-button:hover, &.dark .mapbox-button:hover { 57 | color: #fff; 58 | background-color: #3bb2d0; 59 | } 60 | } 61 | 62 | .leaflet-image-layer, .leaflet-layer, .leaflet-map-pane, .leaflet-marker-icon, .leaflet-marker-pane, .leaflet-marker-shadow { 63 | position: absolute; 64 | left: 0; 65 | top: 0; 66 | } 67 | 68 | .leaflet-overlay-pane { 69 | position: absolute; 70 | left: 0; 71 | top: 0; 72 | 73 | svg { 74 | position: absolute; 75 | left: 0; 76 | top: 0; 77 | } 78 | } 79 | 80 | .leaflet-popup-pane, .leaflet-shadow-pane, .leaflet-tile, .leaflet-tile-container, .leaflet-tile-pane, .leaflet-zoom-box { 81 | position: absolute; 82 | left: 0; 83 | top: 0; 84 | } 85 | 86 | .leaflet-marker-icon, .leaflet-marker-shadow, .leaflet-tile { 87 | -webkit-user-drag: none; 88 | -webkit-user-select: none; 89 | -moz-user-select: none; 90 | user-select: none; 91 | } 92 | 93 | .leaflet-marker-icon, .leaflet-marker-shadow { 94 | display: block; 95 | } 96 | 97 | .leaflet-tile { 98 | filter: inherit; 99 | visibility: hidden; 100 | } 101 | 102 | .leaflet-tile-loaded { 103 | visibility: inherit; 104 | } 105 | 106 | .leaflet-zoom-box { 107 | width: 0; 108 | height: 0; 109 | } 110 | 111 | .leaflet-tile-pane { 112 | z-index: 2; 113 | } 114 | 115 | .leaflet-objects-pane { 116 | z-index: 3; 117 | } 118 | 119 | .leaflet-overlay-pane { 120 | z-index: 4; 121 | } 122 | 123 | .leaflet-shadow-pane { 124 | z-index: 5; 125 | } 126 | 127 | .leaflet-marker-pane { 128 | z-index: 6; 129 | } 130 | 131 | .leaflet-popup-pane { 132 | z-index: 7; 133 | } 134 | 135 | .leaflet-control { 136 | position: relative; 137 | z-index: 7; 138 | pointer-events: auto; 139 | float: left; 140 | clear: both; 141 | } 142 | 143 | .leaflet-right .leaflet-control { 144 | float: right; 145 | } 146 | 147 | .leaflet-top .leaflet-control { 148 | margin-top: 10px; 149 | } 150 | 151 | .leaflet-bottom .leaflet-control { 152 | margin-bottom: 10px; 153 | } 154 | 155 | .leaflet-left .leaflet-control { 156 | margin-left: 10px; 157 | } 158 | 159 | .leaflet-right .leaflet-control { 160 | margin-right: 10px; 161 | } 162 | 163 | .leaflet-bottom { 164 | position: absolute; 165 | z-index: 1000; 166 | pointer-events: none; 167 | } 168 | 169 | .leaflet-top { 170 | position: absolute; 171 | z-index: 1000; 172 | pointer-events: none; 173 | top: 0; 174 | } 175 | 176 | .leaflet-right { 177 | right: 0; 178 | } 179 | 180 | .leaflet-bottom { 181 | bottom: 0; 182 | } 183 | 184 | .leaflet-left { 185 | left: 0; 186 | } 187 | 188 | .leaflet-fade-anim { 189 | .leaflet-popup, .leaflet-tile { 190 | opacity: 0; 191 | -webkit-transition: opacity .2s linear; 192 | -moz-transition: opacity .2s linear; 193 | -o-transition: opacity .2s linear; 194 | transition: opacity .2s linear; 195 | } 196 | 197 | .leaflet-map-pane .leaflet-popup, .leaflet-tile-loaded { 198 | opacity: 1; 199 | } 200 | } 201 | 202 | .leaflet-zoom-anim .leaflet-zoom-animated { 203 | -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1); 204 | -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1); 205 | -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1); 206 | transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1); 207 | } 208 | 209 | .leaflet-pan-anim .leaflet-tile, .leaflet-touching .leaflet-zoom-animated { 210 | -webkit-transition: none; 211 | -moz-transition: none; 212 | -o-transition: none; 213 | transition: none; 214 | } 215 | 216 | .leaflet-zoom-anim { 217 | .leaflet-tile { 218 | -webkit-transition: none; 219 | -moz-transition: none; 220 | -o-transition: none; 221 | transition: none; 222 | } 223 | 224 | .leaflet-zoom-hide { 225 | visibility: hidden; 226 | } 227 | } 228 | 229 | .leaflet-container { 230 | cursor: -webkit-grab; 231 | cursor: -moz-grab; 232 | 233 | &.leaflet-clickable, &.map-clickable { 234 | cursor: pointer; 235 | } 236 | } 237 | 238 | .leaflet-marker-icon, .leaflet-overlay-pane path { 239 | cursor: pointer; 240 | } 241 | 242 | .leaflet-control, .leaflet-popup-pane { 243 | cursor: auto; 244 | } 245 | 246 | .leaflet-dragging { 247 | cursor: move; 248 | cursor: -webkit-grabbing; 249 | cursor: -moz-grabbing; 250 | 251 | .leaflet-clickable, .leaflet-container, .map-clickable { 252 | cursor: move; 253 | cursor: -webkit-grabbing; 254 | cursor: -moz-grabbing; 255 | } 256 | } 257 | 258 | .leaflet-zoom-box { 259 | background: #fff; 260 | border: 2px dotted #202020; 261 | opacity: .5; 262 | } 263 | 264 | .leaflet-bar, .leaflet-control-layers { 265 | background-color: #fff; 266 | border: 1px solid #999; 267 | border-color: rgba(0, 0, 0, 0.4); 268 | border-radius: 3px; 269 | box-shadow: none; 270 | } 271 | 272 | .leaflet-bar { 273 | a { 274 | color: #404040; 275 | color: rgba(0, 0, 0, 0.75); 276 | border-bottom: 1px solid #ddd; 277 | border-bottom-color: rgba(0, 0, 0, 0.1); 278 | 279 | &:hover { 280 | color: #404040; 281 | color: rgba(0, 0, 0, 0.75); 282 | border-bottom: 1px solid #ddd; 283 | border-bottom-color: rgba(0, 0, 0, 0.1); 284 | } 285 | 286 | &:active { 287 | background-color: #f8f8f8; 288 | cursor: pointer; 289 | } 290 | 291 | &:hover { 292 | background-color: #f8f8f8; 293 | cursor: pointer; 294 | 295 | &:first-child { 296 | border-radius: 3px 3px 0 0; 297 | } 298 | 299 | &:last-child { 300 | border-bottom: 0; 301 | border-radius: 0 0 3px 3px; 302 | } 303 | 304 | &:only-of-type { 305 | border-radius: 3px; 306 | } 307 | } 308 | } 309 | 310 | .leaflet-disabled { 311 | cursor: default; 312 | opacity: .75; 313 | } 314 | } 315 | 316 | .leaflet-control-zoom-in, .leaflet-control-zoom-out { 317 | display: block; 318 | content: ''; 319 | text-indent: -999em; 320 | } 321 | 322 | .leaflet-control-layers .leaflet-control-layers-list { 323 | display: none; 324 | } 325 | 326 | .leaflet-control-layers-expanded { 327 | .leaflet-control-layers-toggle { 328 | display: none; 329 | } 330 | 331 | .leaflet-control-layers-list { 332 | display: block; 333 | position: relative; 334 | } 335 | 336 | background: #fff; 337 | padding: 6px 10px 6px 6px; 338 | color: #404040; 339 | color: rgba(0, 0, 0, 0.75); 340 | } 341 | 342 | .leaflet-control-layers-selector { 343 | margin-top: 2px; 344 | position: relative; 345 | top: 1px; 346 | } 347 | 348 | .leaflet-control-layers label { 349 | display: block; 350 | } 351 | 352 | .leaflet-control-layers-separator { 353 | height: 0; 354 | border-top: 1px solid #ddd; 355 | border-top-color: rgba(0, 0, 0, 0.1); 356 | margin: 5px -10px 5px -6px; 357 | } 358 | 359 | .leaflet-container { 360 | .leaflet-control-attribution { 361 | background-color: rgba(255, 255, 255, 0.5); 362 | margin: 0; 363 | box-shadow: none; 364 | 365 | a { 366 | color: #404040; 367 | } 368 | } 369 | 370 | .map-info-container a { 371 | color: #404040; 372 | } 373 | } 374 | 375 | .leaflet-control-attribution a:hover, .map-info-container a:hover { 376 | color: inherit; 377 | text-decoration: underline; 378 | } 379 | 380 | .leaflet-control-attribution, .leaflet-control-scale-line { 381 | padding: 0 5px; 382 | } 383 | 384 | .leaflet-left .leaflet-control-scale { 385 | margin-left: 5px; 386 | } 387 | 388 | .leaflet-bottom .leaflet-control-scale { 389 | margin-bottom: 5px; 390 | } 391 | 392 | .leaflet-container .leaflet-control-attribution.leaflet-compact-attribution { 393 | margin: 10px; 394 | background: #fff; 395 | border-radius: 3px 13px 13px 3px; 396 | padding: 3px 31px 3px 3px; 397 | visibility: hidden; 398 | } 399 | 400 | .leaflet-control-attribution.leaflet-compact-attribution { 401 | &:hover { 402 | visibility: visible; 403 | } 404 | 405 | &:after { 406 | content: ''; 407 | background-color: #fff; 408 | background-color: rgba(255, 255, 255, 0.5); 409 | background-position: 0 -78px; 410 | border-radius: 50%; 411 | position: absolute; 412 | display: inline-block; 413 | width: 26px; 414 | height: 26px; 415 | vertical-align: middle; 416 | bottom: 0; 417 | z-index: 1; 418 | visibility: visible; 419 | cursor: pointer; 420 | } 421 | 422 | &:hover:after { 423 | background-color: #fff; 424 | } 425 | } 426 | 427 | .leaflet-right .leaflet-control-attribution.leaflet-compact-attribution:after { 428 | right: 0; 429 | } 430 | 431 | .leaflet-left .leaflet-control-attribution.leaflet-compact-attribution:after { 432 | left: 0; 433 | } 434 | 435 | .leaflet-control-scale-line { 436 | background-color: rgba(255, 255, 255, 0.5); 437 | border: 1px solid #999; 438 | border-color: rgba(0, 0, 0, 0.4); 439 | border-top: 0; 440 | padding: 2px 5px 1px; 441 | white-space: nowrap; 442 | overflow: hidden; 443 | 444 | &:not(:first-child) { 445 | border-top: 2px solid #ddd; 446 | border-top-color: rgba(0, 0, 0, 0.1); 447 | border-bottom: 0; 448 | margin-top: -2px; 449 | 450 | &:not(:last-child) { 451 | border-bottom: 2px solid #777; 452 | } 453 | } 454 | } 455 | 456 | .leaflet-popup { 457 | position: absolute; 458 | text-align: center; 459 | pointer-events: none; 460 | } 461 | 462 | .leaflet-popup-content-wrapper { 463 | padding: 1px; 464 | text-align: left; 465 | pointer-events: all; 466 | } 467 | 468 | .leaflet-popup-content { 469 | padding: 10px 10px 15px; 470 | margin: 0; 471 | line-height: inherit; 472 | } 473 | 474 | .leaflet-popup-close-button + .leaflet-popup-content-wrapper .leaflet-popup-content { 475 | padding-top: 15px; 476 | } 477 | 478 | .leaflet-popup-tip-container { 479 | width: 20px; 480 | height: 20px; 481 | margin: 0 auto; 482 | position: relative; 483 | } 484 | 485 | .leaflet-popup-tip { 486 | width: 0; 487 | height: 0; 488 | margin: 0; 489 | border-left: 10px solid transparent; 490 | border-right: 10px solid transparent; 491 | border-top: 10px solid #fff; 492 | box-shadow: none; 493 | } 494 | 495 | .leaflet-popup-close-button { 496 | text-indent: -999em; 497 | position: absolute; 498 | top: 0; 499 | right: 0; 500 | pointer-events: all; 501 | 502 | &:hover { 503 | background-color: #f8f8f8; 504 | } 505 | } 506 | 507 | .leaflet-popup-scrolled { 508 | overflow: auto; 509 | border-bottom: 1px solid #ddd; 510 | border-top: 1px solid #ddd; 511 | } 512 | 513 | .leaflet-div-icon { 514 | background: #fff; 515 | border: 1px solid #999; 516 | border-color: rgba(0, 0, 0, 0.4); 517 | } 518 | 519 | .leaflet-editing-icon { 520 | border-radius: 3px; 521 | } 522 | 523 | .leaflet-bar a, .leaflet-control-layers-toggle, .leaflet-popup-close-button, .map-tooltip.closable .close, .mapbox-button-icon:before, .mapbox-icon { 524 | content: ''; 525 | display: inline-block; 526 | width: 26px; 527 | height: 26px; 528 | vertical-align: middle; 529 | background-repeat: no-repeat; 530 | } 531 | 532 | .leaflet-bar a { 533 | display: block; 534 | } 535 | 536 | .leaflet-container.dark .map-tooltip .close, .leaflet-control-attribution:after, .leaflet-control-layers-toggle, .leaflet-control-zoom-in, .leaflet-control-zoom-out, .leaflet-popup-close-button, .map-tooltip .close, .mapbox-icon { 537 | opacity: .75; 538 | background-image: image-url('icons-000000@2x.png'); 539 | background-repeat: no-repeat; 540 | background-size: 26px 260px; 541 | } 542 | 543 | .leaflet-container.dark { 544 | .leaflet-control-attribution:after, .leaflet-control-layers-toggle, .leaflet-control-zoom-in, .leaflet-control-zoom-out, .mapbox-icon { 545 | opacity: 1; 546 | background-image: image-url('icons-ffffff@2x.png'); 547 | background-size: 26px 260px; 548 | } 549 | } 550 | 551 | .mapbox-button-icon:before { 552 | opacity: 1; 553 | background-image: image-url('icons-ffffff@2x.png'); 554 | background-size: 26px 260px; 555 | } 556 | 557 | .leaflet-bar { 558 | .leaflet-control-zoom-in { 559 | background-position: 0 0; 560 | } 561 | 562 | .leaflet-control-zoom-out { 563 | background-position: 0 -26px; 564 | } 565 | } 566 | 567 | .leaflet-popup-close-button, .map-tooltip.closable .close { 568 | background-position: -3px -55px; 569 | width: 20px; 570 | height: 20px; 571 | border-radius: 0 3px 0 0; 572 | } 573 | 574 | .mapbox-icon-info { 575 | background-position: 0 -78px; 576 | } 577 | 578 | .leaflet-control-layers-toggle { 579 | background-position: 0 -104px; 580 | } 581 | 582 | .mapbox-icon { 583 | &.mapbox-icon-share { 584 | background-position: 0 -130px; 585 | 586 | &:before { 587 | background-position: 0 -130px; 588 | } 589 | } 590 | 591 | &.mapbox-icon-geocoder { 592 | background-position: 0 -156px; 593 | 594 | &:before { 595 | background-position: 0 -156px; 596 | } 597 | } 598 | } 599 | 600 | .mapbox-icon-facebook { 601 | background-position: 0 -182px; 602 | 603 | &:before { 604 | background-position: 0 -182px; 605 | } 606 | } 607 | 608 | .mapbox-icon-twitter { 609 | background-position: 0 -208px; 610 | 611 | &:before { 612 | background-position: 0 -208px; 613 | } 614 | } 615 | 616 | .mapbox-icon-pinterest { 617 | background-position: 0 -234px; 618 | 619 | &:before { 620 | background-position: 0 -234px; 621 | } 622 | } 623 | 624 | .leaflet-popup-content-wrapper, .map-legends, .map-tooltip { 625 | background: #fff; 626 | border-radius: 3px; 627 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); 628 | } 629 | 630 | .map-legends, .map-tooltip { 631 | max-width: 300px; 632 | } 633 | 634 | .map-legends .map-legend { 635 | padding: 10px; 636 | } 637 | 638 | .map-tooltip { 639 | z-index: 999999; 640 | padding: 10px; 641 | min-width: 180px; 642 | max-height: 400px; 643 | overflow: auto; 644 | opacity: 1; 645 | -webkit-transition: opacity 150ms; 646 | -moz-transition: opacity 150ms; 647 | -o-transition: opacity 150ms; 648 | transition: opacity 150ms; 649 | 650 | .close { 651 | text-indent: -999em; 652 | overflow: hidden; 653 | display: none; 654 | } 655 | 656 | &.closable .close { 657 | position: absolute; 658 | top: 0; 659 | right: 0; 660 | border-radius: 3px; 661 | 662 | &:active { 663 | background-color: #f8f8f8; 664 | } 665 | } 666 | } 667 | 668 | .leaflet-control-interaction { 669 | position: absolute; 670 | top: 10px; 671 | right: 10px; 672 | width: 300px; 673 | } 674 | 675 | .leaflet-popup-content .marker-title { 676 | font-weight: 700; 677 | } 678 | 679 | .leaflet-control .mapbox-button { 680 | background-color: #fff; 681 | border: 1px solid #ddd; 682 | border-color: rgba(0, 0, 0, 0.1); 683 | padding: 5px 10px; 684 | border-radius: 3px; 685 | } 686 | 687 | .mapbox-modal { 688 | > div { 689 | position: absolute; 690 | top: 0; 691 | left: 0; 692 | width: 100%; 693 | height: 100%; 694 | z-index: -1; 695 | overflow-y: auto; 696 | } 697 | 698 | &.active > div { 699 | z-index: 99999; 700 | transition: all .2s,z-index 0 0; 701 | } 702 | 703 | .mapbox-modal-mask { 704 | background: rgba(0, 0, 0, 0.5); 705 | opacity: 0; 706 | } 707 | 708 | &.active .mapbox-modal-mask { 709 | opacity: 1; 710 | } 711 | 712 | .mapbox-modal-content { 713 | -webkit-transform: translateY(-100%); 714 | -moz-transform: translateY(-100%); 715 | -ms-transform: translateY(-100%); 716 | transform: translateY(-100%); 717 | } 718 | 719 | &.active .mapbox-modal-content { 720 | -webkit-transform: translateY(0); 721 | -moz-transform: translateY(0); 722 | -ms-transform: translateY(0); 723 | transform: translateY(0); 724 | } 725 | } 726 | 727 | .mapbox-modal-body { 728 | position: relative; 729 | background: #fff; 730 | padding: 20px; 731 | z-index: 1000; 732 | width: 50%; 733 | margin: 20px 0 20px 25%; 734 | } 735 | 736 | .mapbox-share-buttons { 737 | margin: 0 0 20px; 738 | 739 | a { 740 | width: 33.3333%; 741 | border-left: 1px solid #fff; 742 | text-align: center; 743 | border-radius: 0; 744 | 745 | &:last-child { 746 | border-radius: 0 3px 3px 0; 747 | } 748 | 749 | &:first-child { 750 | border: 0; 751 | border-radius: 3px 0 0 3px; 752 | } 753 | } 754 | } 755 | 756 | .mapbox-modal input { 757 | width: 100%; 758 | height: 40px; 759 | padding: 10px; 760 | border: 1px solid #ddd; 761 | border-color: rgba(0, 0, 0, 0.1); 762 | color: rgba(0, 0, 0, 0.5); 763 | } 764 | 765 | .leaflet-control.mapbox-control-info { 766 | margin: 5px 30px 10px 10px; 767 | min-height: 26px; 768 | } 769 | 770 | .leaflet-right .leaflet-control.mapbox-control-info { 771 | margin: 5px 10px 10px 30px; 772 | } 773 | 774 | .mapbox-info-toggle { 775 | background-color: #fff; 776 | background-color: rgba(255, 255, 255, 0.5); 777 | border-radius: 50%; 778 | position: absolute; 779 | bottom: 0; 780 | left: 0; 781 | z-index: 1; 782 | } 783 | 784 | .leaflet-right .mapbox-control-info .mapbox-info-toggle { 785 | left: auto; 786 | right: 0; 787 | } 788 | 789 | .mapbox-info-toggle:hover { 790 | background-color: #fff; 791 | } 792 | 793 | .map-info-container { 794 | background: #fff; 795 | padding: 3px 5px 3px 27px; 796 | display: none; 797 | position: relative; 798 | bottom: 0; 799 | left: 0; 800 | border-radius: 13px 3px 3px 13px; 801 | } 802 | 803 | .leaflet-right .map-info-container { 804 | left: auto; 805 | right: 0; 806 | padding: 3px 27px 3px 5px; 807 | border-radius: 3px 13px 13px 3px; 808 | } 809 | 810 | .mapbox-control-info.active .map-info-container { 811 | display: inline-block; 812 | } 813 | 814 | .leaflet-container .mapbox-improve-map { 815 | font-weight: 700; 816 | } 817 | 818 | .leaflet-control-mapbox-geocoder { 819 | position: relative; 820 | 821 | &.searching { 822 | opacity: .75; 823 | } 824 | 825 | .leaflet-control-mapbox-geocoder-wrap { 826 | background: #fff; 827 | position: absolute; 828 | border: 1px solid #999; 829 | border-color: rgba(0, 0, 0, 0.4); 830 | overflow: hidden; 831 | left: 26px; 832 | height: 28px; 833 | width: 0; 834 | top: -1px; 835 | border-radius: 0 3px 3px 0; 836 | opacity: 0; 837 | -webkit-transition: opacity 100ms; 838 | -moz-transition: opacity 100ms; 839 | -o-transition: opacity 100ms; 840 | transition: opacity 100ms; 841 | } 842 | 843 | &.active .leaflet-control-mapbox-geocoder-wrap { 844 | width: 180px; 845 | opacity: 1; 846 | } 847 | } 848 | 849 | .leaflet-bar .leaflet-control-mapbox-geocoder-toggle { 850 | border-bottom: 0; 851 | 852 | &:hover { 853 | border-bottom: 0; 854 | } 855 | } 856 | 857 | .leaflet-control-mapbox-geocoder-toggle { 858 | border-radius: 3px; 859 | } 860 | 861 | .leaflet-control-mapbox-geocoder { 862 | &.active { 863 | border-top-right-radius: 0; 864 | border-bottom-right-radius: 0; 865 | 866 | .leaflet-control-mapbox-geocoder-toggle { 867 | border-top-right-radius: 0; 868 | border-bottom-right-radius: 0; 869 | } 870 | } 871 | 872 | .leaflet-control-mapbox-geocoder-form input { 873 | background: 0 0; 874 | border: 0; 875 | width: 180px; 876 | padding: 0 0 0 10px; 877 | height: 26px; 878 | outline: 0; 879 | } 880 | } 881 | 882 | .leaflet-control-mapbox-geocoder-results { 883 | width: 180px; 884 | position: absolute; 885 | left: 26px; 886 | top: 25px; 887 | border-radius: 0 0 3px 3px; 888 | } 889 | 890 | .leaflet-control-mapbox-geocoder.active .leaflet-control-mapbox-geocoder-results { 891 | background: #fff; 892 | border: 1px solid #999; 893 | border-color: rgba(0, 0, 0, 0.4); 894 | } 895 | 896 | .leaflet-control-mapbox-geocoder-results { 897 | a, span { 898 | padding: 0 10px; 899 | text-overflow: ellipsis; 900 | white-space: nowrap; 901 | display: block; 902 | width: 100%; 903 | font-size: 12px; 904 | line-height: 26px; 905 | text-align: left; 906 | overflow: hidden; 907 | } 908 | } 909 | 910 | .leaflet-container.dark .leaflet-control .leaflet-control-mapbox-geocoder-results a:hover, .leaflet-control-mapbox-geocoder-results a:hover { 911 | background: #f8f8f8; 912 | opacity: 1; 913 | } 914 | 915 | .leaflet-right { 916 | .leaflet-control-mapbox-geocoder-results { 917 | left: auto; 918 | right: 26px; 919 | } 920 | 921 | .leaflet-control-mapbox-geocoder-wrap { 922 | left: auto; 923 | right: 26px; 924 | border-radius: 3px 0 0 3px; 925 | } 926 | 927 | .leaflet-control-mapbox-geocoder.active { 928 | border-radius: 0 3px 3px 0; 929 | 930 | .leaflet-control-mapbox-geocoder-toggle { 931 | border-radius: 0 3px 3px 0; 932 | } 933 | } 934 | } 935 | 936 | .leaflet-bottom .leaflet-control-mapbox-geocoder-results { 937 | top: auto; 938 | bottom: 25px; 939 | border-radius: 3px 3px 0 0; 940 | } 941 | 942 | .mapbox-logo-true { 943 | &:before { 944 | content: ''; 945 | display: inline-block; 946 | width: 61px; 947 | height: 19px; 948 | vertical-align: middle; 949 | } 950 | 951 | background-repeat: no-repeat; 952 | background-size: 61px 19px; 953 | background-image: url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4='); 954 | } 955 | 956 | .leaflet-container.dark { 957 | .leaflet-bar { 958 | background-color: #404040; 959 | border-color: #202020; 960 | border-color: rgba(0, 0, 0, 0.75); 961 | 962 | a { 963 | color: #404040; 964 | border-color: rgba(0, 0, 0, 0.5); 965 | 966 | &:active, &:hover { 967 | background-color: #505050; 968 | } 969 | } 970 | } 971 | 972 | .leaflet-control-attribution { 973 | background-color: rgba(0, 0, 0, 0.5); 974 | color: #f8f8f8; 975 | 976 | &:after { 977 | background-color: rgba(0, 0, 0, 0.5); 978 | color: #f8f8f8; 979 | } 980 | } 981 | 982 | .map-info-container, .mapbox-info-toggle { 983 | background-color: rgba(0, 0, 0, 0.5); 984 | color: #f8f8f8; 985 | } 986 | 987 | .leaflet-control-attribution a, .map-info-container a { 988 | color: #fff; 989 | 990 | &:hover { 991 | color: #fff; 992 | } 993 | } 994 | 995 | .leaflet-control-attribution:hover:after { 996 | background-color: #000; 997 | } 998 | 999 | .leaflet-control-layers-list span { 1000 | color: #f8f8f8; 1001 | } 1002 | 1003 | .leaflet-control-layers-separator { 1004 | border-top-color: rgba(255, 255, 255, 0.1); 1005 | } 1006 | 1007 | .leaflet-bar a.leaflet-disabled, .leaflet-control .mapbox-button.disabled { 1008 | background-color: #252525; 1009 | color: #404040; 1010 | } 1011 | 1012 | .leaflet-control-mapbox-geocoder > div { 1013 | border-color: #202020; 1014 | border-color: rgba(0, 0, 0, 0.75); 1015 | } 1016 | 1017 | .leaflet-control .leaflet-control-mapbox-geocoder-results { 1018 | a { 1019 | border-color: #ddd #202020; 1020 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.75); 1021 | } 1022 | 1023 | span { 1024 | border-color: #202020; 1025 | border-color: rgba(0, 0, 0, 0.75); 1026 | } 1027 | } 1028 | } 1029 | 1030 | @media only screen and (max-width: 800px) { 1031 | .mapbox-modal-body { 1032 | width: 83.3333%; 1033 | margin-left: 8.3333%; 1034 | } 1035 | } 1036 | 1037 | @media only screen and (max-width: 640px) { 1038 | .mapbox-modal-body { 1039 | width: 100%; 1040 | height: 100%; 1041 | margin: 0; 1042 | } 1043 | } 1044 | 1045 | @media print { 1046 | .mapbox-improve-map { 1047 | display: none; 1048 | } 1049 | } 1050 | 1051 | .leaflet-vml-shape { 1052 | width: 1px; 1053 | height: 1px; 1054 | } 1055 | 1056 | .lvml { 1057 | behavior: url(#default#VML); 1058 | display: inline-block; 1059 | position: absolute; 1060 | } 1061 | 1062 | .leaflet-container img { 1063 | &.leaflet-tile { 1064 | max-width: none !important; 1065 | } 1066 | 1067 | &.leaflet-marker-icon { 1068 | max-width: none; 1069 | } 1070 | 1071 | &.leaflet-image-layer { 1072 | max-width: 15000px !important; 1073 | } 1074 | } 1075 | 1076 | .leaflet-overlay-pane svg { 1077 | -moz-user-select: none; 1078 | } 1079 | 1080 | .leaflet-oldie .mapbox-modal { 1081 | .mapbox-modal-content { 1082 | display: none; 1083 | } 1084 | 1085 | &.active .mapbox-modal-content { 1086 | display: block; 1087 | } 1088 | } 1089 | 1090 | .map-tooltip { 1091 | width: 280px\8; 1092 | } 1093 | 1094 | .leaflet-oldie { 1095 | .leaflet-container.dark .map-tooltip .close, .leaflet-control-layers-toggle, .leaflet-control-zoom-in, .leaflet-control-zoom-out, .leaflet-popup-close-button, .map-tooltip .close, .mapbox-icon { 1096 | background-image: url(data:image/png;base64,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); 1097 | } 1098 | 1099 | .leaflet-container.dark { 1100 | .leaflet-control-layers-toggle, .leaflet-control-zoom-in, .leaflet-control-zoom-out, .mapbox-icon { 1101 | background-image: url(data:image/png;base64,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); 1102 | } 1103 | } 1104 | 1105 | .mapbox-button-icon:before { 1106 | background-image: url(data:image/png;base64,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); 1107 | } 1108 | 1109 | .mapbox-logo-true { 1110 | background-image: none; 1111 | } 1112 | } 1113 | -------------------------------------------------------------------------------- /lib/mapbox-rails.rb: -------------------------------------------------------------------------------- 1 | require "mapbox-rails/version" 2 | 3 | module Mapbox 4 | module Rails 5 | if ::Rails.version.to_s < '3.1' 6 | require 'mapbox-rails/railtie' 7 | else 8 | require 'mapbox-rails/engine' 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /lib/mapbox-rails/engine.rb: -------------------------------------------------------------------------------- 1 | module Mapbox 2 | module Rails 3 | class Engine < ::Rails::Engine 4 | end 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /lib/mapbox-rails/railtie.rb: -------------------------------------------------------------------------------- 1 | module Mapbox 2 | module Rails 3 | class Railtie < ::Rails::Railtie 4 | end 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /lib/mapbox-rails/remote_resource_loader.rb: -------------------------------------------------------------------------------- 1 | require 'thor' 2 | 3 | class RemoteResourceLoader < Thor 4 | include Thor::Actions 5 | 6 | desc 'fetch source files', 'fetch source files from the MapBox S3 storage' 7 | def fetch 8 | self.destination_root = 'app/assets' 9 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/mapbox.uncompressed.js", "javascripts/mapbox.js" 10 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/mapbox.css", "stylesheets/mapbox.css" 11 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/images/layers.png", "images/layers.png" 12 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/images/layers-2x.png", "images/layers-2x.png" 13 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/images/marker-icon.png", "images/marker-icon.png" 14 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/images/marker-icon-2x.png", "images/marker-icon-2x.png" 15 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/images/marker-shadow.png", "images/marker-shadow.png" 16 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/images/icons-000000@2x.png", "images/icons-000000@2x.png" 17 | get "http://api.tiles.mapbox.com/mapbox.js/v#{Mapbox::Rails::MAPBOX_VERSION}/images/icons-ffffff@2x.png", "images/icons-ffffff@2x.png" 18 | end 19 | 20 | desc 'convert css to scss file', 'convert css to scss file by sass-convert' 21 | def convert 22 | self.destination_root = 'app/assets' 23 | inside destination_root do 24 | run('sass-convert -F css -T scss stylesheets/mapbox.css stylesheets/mapbox.scss') 25 | gsub_file 'stylesheets/mapbox.scss', 'url(images/layers.png)', "image-url('layers.png')" 26 | gsub_file 'stylesheets/mapbox.scss', 'url(images/layers-2x.png)', "image-url('layers-2x.png')" 27 | gsub_file 'stylesheets/mapbox.scss', 'url(images/marker-icon.png)', "image-url('marker-icon.png')" 28 | gsub_file 'stylesheets/mapbox.scss', 'url(images/marker-icon-2x.png)', "image-url('marker-icon-2x.png')" 29 | gsub_file 'stylesheets/mapbox.scss', 'url(images/marker-shadow.png)', "image-url('marker-shadow.png')" 30 | gsub_file 'stylesheets/mapbox.scss', 'url(images/icons-000000@2x.png)', "image-url('icons-000000@2x.png')" 31 | gsub_file 'stylesheets/mapbox.scss', 'url(images/icons-ffffff@2x.png)', "image-url('icons-ffffff@2x.png')" 32 | end 33 | end 34 | 35 | desc 'clean up useless files', 'clean up useless files' 36 | def cleanup 37 | self.destination_root = 'app/assets' 38 | remove_file 'stylesheets/mapbox.css' 39 | end 40 | end 41 | -------------------------------------------------------------------------------- /lib/mapbox-rails/version.rb: -------------------------------------------------------------------------------- 1 | module Mapbox 2 | module Rails 3 | VERSION = '2.3.0' 4 | MAPBOX_VERSION = '2.3.0' 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /mapbox-rails.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | lib = File.expand_path('../lib', __FILE__) 3 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 4 | require 'mapbox-rails/version' 5 | 6 | Gem::Specification.new do |spec| 7 | spec.name = "mapbox-rails" 8 | spec.version = Mapbox::Rails::VERSION 9 | spec.authors = ["Mark Madsen"] 10 | spec.email = ["growl@agileanimal.com"] 11 | spec.description = %q{Integrate MapBox.js with the Rails asset pipeline} 12 | spec.summary = %q{Integrate MapBox.js with the Rails asset pipeline} 13 | spec.homepage = "https://github.com/aai/mapbox-rails" 14 | spec.license = "BSD and MIT" 15 | 16 | spec.files = `git ls-files`.split($/) 17 | spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } 18 | spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) 19 | spec.require_paths = ["lib"] 20 | 21 | spec.add_development_dependency "bundler", "~> 1.3" 22 | spec.add_development_dependency "rake" 23 | spec.add_development_dependency "thor" 24 | spec.add_development_dependency "sass" 25 | end 26 | --------------------------------------------------------------------------------