first commit

This commit is contained in:
2024-12-12 15:33:18 +01:00
commit 2c8998663e
3360 changed files with 777573 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
#logos {
pointer-events: none;
}
#shops polygon,
#shops rect {
opacity: 0.6;
stroke: #fff;
stroke-width: 0.5;
transition: opacity 0.2s;
}
#shops polygon:hover,
#shops rect:hover,
#misc path:hover {
opacity: 1;
}
/*Food*/
#food polygon,
#food rect {
fill: #bfe79e;
}
/* Department */
#department polygon,
#department rect {
fill: #f8c255;
}
/* Health */
#health polygon,
#health rect {
fill: #b7a6bd;
}
/* Clothing */
#clothing polygon,
#clothing rect {
fill: #f56b7e;
}
/* Misc */
#misc polygon,
#misc rect,
#misc path {
fill: #7dd5c9;
}

View File

@@ -0,0 +1,337 @@
body {
background-color: #fff;
color: #888;
font-family: 'Maven Pro';
font-size: 14px;
margin: 0;
}
ul, ol {
padding-left: 40px;
margin: 0;
list-style: none;
}
h1 {
color: #fff;
font-size: 28px;
font-weight: lighter;
line-height: 40px;
margin-top: 0;
margin-bottom: 40px;
text-align: center;
}
h3 {
color: #222;
}
p {
font-size: 16px;
line-height: 24px;
}
hr {
border: none;
border-bottom: 1px solid #ddd;
margin: 40px 0;
}
a {
text-decoration: none;
transition: color 0.2s;
}
.clear {
clear: both;
}
.inner {
width: 1060px;
margin: 0 auto;
max-width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.inner.over {
margin-top: -180px;
}
/* Header */
#header {
background-image: url(../images/background.jpg);
background-repeat: no-repeat;
background-position: center -60px;
background-size: cover;
padding: 60px 30px 100px 30px;
box-shadow: 0 -40px 80px #fff inset;
}
#header h1 {
color: #444;
margin-top: 40px;
margin-bottom: 80px;
}
#header nav {
float: right;
}
#main-menu li {
display: inline-block;
margin-left: 30px;
}
#main-menu a {
color: #bbb;
font-size: 16px;
text-decoration: none;
}
#main-menu a:hover {
color: #666;
}
/* Logo */
#logo {
background-image: url(../images/logo.png);
background-repeat: no-repeat;
background-position: center;
display: block;
width: 140px;
height: 42px;
}
.button {
background-color: #f56b7e;
border-radius: 3px;
color: #fff !important;
font-size: 16px;
text-decoration: none;
display: inline-block;
padding: 12px 0 12px 16px;
}
.button span {
background-color: rgba(0, 0, 0, 0.08);
border-radius: 0 3px 3px 0;
font-weight: bold;
margin-left: 24px;
padding: 12px 16px 12px 8px;
position: relative;
transition: padding 0.2s;
}
.button:hover span {
padding: 12px 24px 12px 16px;
}
.button span::before {
width: 14px;
height: 42px;
content: '';
background-image: url(../images/button-divider.png);
background-repeat: no-repeat;
position: absolute;
left: -14px;
top: 0;
}
/* Browser mockup */
.window-mockup {
background-color: #f0f0f0; /* #f0ece0 */
background-image: url(../images/window.png);
background-repeat: no-repeat;
background-position: 14px center;
border-radius: 10px 10px 0 0;
height: 42px;
overflow: hidden;
}
.window-mockup.brown {
background-color: #2f2e2b;
}
.window-bar {
background-color: #f8f8f8; /* #f6f4ed */
border-radius: 3px;
margin: 10px 14px 10px 80px;
height: 22px;
}
/* Editor */
.editor-window {
display: none;
margin: 0 auto;
width: 460px;
}
.editor-window .window-mockup {
cursor: pointer;
}
.editor-body {
background: #272822;
color: #cfcfc2;
padding: 14px;
font-size: 12px;
}
/* Map */
.map-container {
font-family: 'PT Sans';
max-width: 800px;
margin: 0 auto;
margin-bottom: 60px;
}
/* Examples */
#examples {
font-size: 0;
padding: 0;
display: block;
text-align: center;
}
#examples li {
display: inline-block;
}
#examples a {
border-radius: 3px;
border: 2px solid #fff;
color: #bbb;
font-size: 16px;
display: block;
padding: 10px;
margin: 0 10px;
transition: border-color 0.2s, color 0.2s;
}
#examples a:hover {
color: #666;
border: 2px solid #eee;
}
#examples .active a {
border: 2px solid #ddd;
color: #666;
}
/* WordPress */
#wordpress {
color: #fff;
display: block;
font-size: 28px;
text-align: center;
}
#wordpress strong {
margin-left: 20px;
}
#wordpress img {
vertical-align: middle;
}
/* Contact */
#contact {
background-image: url(../images/mail.png);
background-repeat: no-repeat;
background-position: center;
display: block;
width: 48px;
height: 48px;
margin: 0 auto 30px auto;
}
/* Footer */
#footer {
background-color: #2f2e2b;
padding: 60px 0;
text-align: center;
}
#footer span a {
border-bottom: 1px solid transparent;
color: #aaa;
transition: color 0.2s, border-color 0.2s;
}
#footer span a:hover {
border-color: #666;
color: #eee;
}
/* Icons */
.icon {
background-repeat: no-repeat;
background-position: center 10px;
padding-top: 60px;
}
.icon.landmark { background-image: url(../images/icon-landmark.png); }
.icon.layer { background-image: url(../images/icon-layer.png); }
.icon.link { background-image: url(../images/icon-link.png); }
.icon.browser { background-image: url(../images/icon-browser.png); }
.icon.responsive { background-image: url(../images/icon-responsive.png); }
.icon.mobile { background-image: url(../images/icon-mobile.png); }
.container {
margin: 20px 0;
}
.container:after {
clear: both;
content: '';
display: block;
height: 0;
visibility: hidden;
font-size: 0;
}
.one-third {
float: left;
padding-left: 2%;
padding-right: 2%;
width: 29%;
}
.features {
text-align: center;
}
section {
padding: 60px 0;
}
section.purple {
background-color: #b7a6bd;
color: #fff;
padding: 60px 0;
}
section.blue {
background-color: #7DD5C9;
color: #fff;
padding: 20px 0;
}
/* Responsivity */
@media all and (max-width: 479px) {
#header {
display: none;
}
.inner.over {
margin-top: 0;
padding-top: 0;
}
.window-mockup {
display: none;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,60 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 800 600">
<rect id="background" fill="#596267" width="800" height="600"/>
<g id="fund">
<path id="shadow" display="none" fill="#E4E4E4" d="M425.5,498l54-54h36l36,36h63l27-27v-63l-90-90c0,0,0-54,0-99s-36-72-72-72h-9
l-54-54h-63l-36,36h-126V93h-117v180h117v-18h99l36,36v72l-63,63l72,72H425.5z"/>
<polygon fill="#454545" points="353.5,481 614.5,481 641.5,454 641.5,391 551.5,301 551.5,211 416.5,76 353.5,76 317.5,112
290.5,139 290.5,256 326.5,292 326.5,364 299.5,391 299.5,427"/>
<polygon fill="#eee" points="350.5,476 611.5,476 638.5,449 638.5,386 548.5,296 548.5,206 413.5,71 350.5,71 314.5,107
287.5,134 287.5,251 323.5,287 323.5,359 296.5,386 296.5,422"/>
<polygon fill="#fff" points="548.5,287 548.5,206 467.5,125 413.5,71 350.5,71 287.5,134 287.5,251 323.5,287"/>
<g>
<path fill="#888" d="M447.641,380.91V386h-2.69v-14.46h4.71c0.967,0,1.804,0.113,2.51,0.34c0.707,0.227,1.291,0.544,1.75,0.95
c0.461,0.406,0.801,0.894,1.021,1.46s0.33,1.187,0.33,1.86c0,0.699-0.116,1.342-0.351,1.925c-0.232,0.583-0.583,1.085-1.049,1.505
c-0.467,0.42-1.051,0.747-1.75,0.979c-0.701,0.233-1.521,0.351-2.461,0.351H447.641z M447.641,378.81h2.02
c0.494,0,0.924-0.062,1.29-0.185s0.671-0.3,0.91-0.53c0.24-0.229,0.42-0.51,0.54-0.84s0.18-0.698,0.18-1.104
c0-0.387-0.06-0.737-0.18-1.051c-0.12-0.313-0.3-0.58-0.54-0.8c-0.239-0.22-0.544-0.388-0.91-0.505
c-0.366-0.116-0.796-0.175-1.29-0.175h-2.02V378.81z"/>
<path fill="#888" d="M461.92,371.38c0.667,0,1.277,0.099,1.83,0.295c0.554,0.197,1.027,0.476,1.42,0.835
c0.394,0.36,0.701,0.794,0.92,1.3c0.221,0.507,0.33,1.07,0.33,1.69c0,0.533-0.078,1.026-0.234,1.48
c-0.156,0.453-0.367,0.887-0.631,1.3c-0.263,0.413-0.57,0.813-0.924,1.2s-0.725,0.779-1.11,1.18l-3.261,3.33
c0.32-0.094,0.634-0.165,0.94-0.215c0.307-0.051,0.601-0.075,0.88-0.075h3.711c0.266,0,0.478,0.075,0.635,0.225
c0.156,0.15,0.234,0.349,0.234,0.595V386h-9.92v-0.82c0-0.166,0.035-0.34,0.105-0.52s0.182-0.347,0.334-0.5l4.391-4.4
c0.367-0.373,0.695-0.729,0.984-1.069c0.291-0.341,0.534-0.677,0.73-1.011c0.197-0.333,0.347-0.671,0.45-1.015
s0.155-0.705,0.155-1.085c0-0.347-0.051-0.651-0.15-0.915s-0.243-0.485-0.43-0.665c-0.188-0.18-0.408-0.315-0.665-0.405
s-0.545-0.135-0.865-0.135c-0.593,0-1.081,0.15-1.465,0.45s-0.651,0.703-0.806,1.21c-0.072,0.253-0.183,0.435-0.33,0.545
c-0.146,0.11-0.332,0.165-0.559,0.165c-0.101,0-0.211-0.01-0.33-0.03l-1.301-0.229c0.1-0.693,0.293-1.302,0.58-1.825
s0.645-0.96,1.075-1.311c0.43-0.35,0.923-0.613,1.479-0.79C460.682,371.469,461.28,371.38,461.92,371.38z"/>
</g>
<polygon fill="#bbb" stroke="#fff" stroke-width="0.5" points="350.5,71 287.5,134 287.5,152 494.5,152 413.5,71"/>
</g>
<g id="shops">
<g id="misc">
<a xlink:href="#petco" xlink:title="Petco"><polygon points="377.5,152 377.5,197 386.5,206 548.5,206 494.5,152"/></a>
<polygon points="458.5,206 485.5,233 485.5,287 548.5,287 548.5,206"/>
</g>
<g id="clothing">
<polygon points="350.5,215 350.5,152 287.5,152 287.5,251 323.5,287 413.5,287 413.5,251 386.5,251"/>
</g>
</g>
<g id="signs">
<g class="escalator-down">
<path fill="#454545" d="M451.231,261.439c-0.575,0-0.897,0.297-0.897,0.904v6.255 c0,0.567,0.29,0.864,0.864,0.864h6.281c0.573,0,0.864-0.282,0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904 C457.461,261.439,451.23,261.438,451.231,261.439z"/>
<path fill="#fff" d="M453.852,263.549c0.27,0,0.487-0.218,0.487-0.488c0-0.269-0.218-0.487-0.487-0.487 s-0.488,0.218-0.488,0.487C453.363,263.331,453.582,263.549,453.852,263.549z"/>
<path fill="#fff" d="M453.852,263.061"/>
<path fill="#fff" d="M454.334,264.427v-0.307c0-0.655-0.965-0.648-0.965,0v1.253h0.001l-0.911,0.912 c-0.086,0.086-0.097,0.089-0.267,0.089c0,0-0.557,0-0.557,0c-0.562,0-0.897,0.505-0.897,0.932s0.336,0.968,0.947,0.968 c0,0,0.759,0,0.993,0s0.519-0.089,0.753-0.311l2.908-2.899c0.063-0.055,0.098-0.073,0.204-0.073c0,0,0.4,0,0.718,0 c0.346,0,0.835-0.392,0.835-0.957c0-0.559-0.493-0.931-0.863-0.933H456.1c-0.234,0-0.536,0.096-0.716,0.276L454.334,264.427 L454.334,264.427z"/>
<path fill="#fff" d="M455.145,268.304h1.02c0.279,0,0.291-0.431,0-0.431h-0.522l0.993-0.993 c0.22-0.22-0.092-0.539-0.325-0.305l-0.979,0.98v-0.517c0.002-0.28-0.434-0.291-0.434,0v1.012 C454.897,268.202,454.998,268.304,455.145,268.304z"/>
<path fill="#454545" d="M456.169,263.585h1.02c0.248,0,0.415,0.277,0.415,0.443s-0.118,0.474-0.422,0.474h-0.613 c-0.259,0-0.375,0.037-0.523,0.186l-2.931,2.931c-0.119,0.118-0.27,0.166-0.462,0.166h-0.967c-0.248,0-0.467-0.21-0.467-0.486 s0.209-0.43,0.424-0.43h0.663c0.192,0,0.321-0.055,0.431-0.166l2.979-2.98C455.839,263.601,455.961,263.585,456.169,263.585z"/>
</g>
<g class="escalator-up">
<path fill="#454545" d="M441.813,261.439c-0.575,0-0.897,0.297-0.897,0.904v6.255 c0,0.567,0.29,0.864,0.864,0.864h6.281c0.573,0,0.864-0.282,0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904 C448.043,261.439,441.813,261.438,441.813,261.439z"/>
<path fill="#fff" d="M444.435,263.549c0.27,0,0.487-0.218,0.487-0.488c0-0.269-0.218-0.487-0.487-0.487 s-0.488,0.218-0.488,0.487C443.946,263.331,444.165,263.549,444.435,263.549z"/>
<path fill="#fff" d="M444.435,263.061"/>
<path fill="#fff" d="M444.917,264.427v-0.307c0-0.655-0.965-0.648-0.965,0v1.253h0.001l-0.911,0.912 c-0.086,0.086-0.097,0.089-0.267,0.089c0,0-0.557,0-0.557,0c-0.562,0-0.897,0.505-0.897,0.932s0.336,0.968,0.947,0.968 c0,0,0.759,0,0.993,0s0.519-0.089,0.753-0.311l2.908-2.899c0.063-0.055,0.098-0.073,0.204-0.073c0,0,0.4,0,0.718,0 c0.346,0,0.835-0.392,0.835-0.957c0-0.559-0.493-0.931-0.863-0.933h-1.134c-0.234,0-0.536,0.096-0.716,0.276L444.917,264.427 L444.917,264.427z"/>
<path fill="#fff" d="M447.044,266.493h-1.02c-0.279,0-0.291,0.431,0,0.431h0.522l-0.993,0.993 c-0.22,0.22,0.092,0.539,0.325,0.305l0.979-0.98v0.517c-0.002,0.28,0.434,0.291,0.434,0v-1.012 C447.291,266.595,447.19,266.493,447.044,266.493z"/>
<path fill="#454545" d="M446.752,263.585h1.02c0.248,0,0.415,0.277,0.415,0.443s-0.118,0.474-0.422,0.474 h-0.613c-0.259,0-0.375,0.037-0.523,0.186l-2.931,2.931c-0.119,0.118-0.27,0.166-0.462,0.166h-0.967 c-0.248,0-0.467-0.21-0.467-0.486s0.209-0.43,0.424-0.43h0.663c0.192,0,0.321-0.055,0.431-0.166l2.979-2.98 C446.422,263.601,446.544,263.585,446.752,263.585z"/>
</g>
</g>
<!-- Image fallback -->
<image xlink:href="images/mall/mall-basement.svg" src="images/mall/mall-basement.png"/>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@@ -0,0 +1,101 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 800 600">
<g id="ground">
<rect id="background" fill="#eee" width="800" height="600"/>
<g id="parking">
<path fill="#fff" d="M287.5 340c0 5.5-3.182 13.182-7.071 17.071l-39.857 39.857C236.682 400.818 229 404 223.5 404h-142c-5.5 0-10-4.5-10-10v-88c0-5.5 4.5-10 10-10h124c5.5 0 10-4.05 10-9s4.5-9 10-9h34c5.5 0 13.182 3.182 17.071 7.071l3.857 3.857c3.889 3.889 7.071 11.571 7.071 17.071V340z"/>
<path fill="none" stroke="#ddd" stroke-width="0.5" d="M287.5 340c0 5.5-3.182 13.182-7.071 17.071l-39.857 39.857C236.682 400.818 229 404 223.5 404h-142c-5.5 0-10-4.5-10-10v-88c0-5.5 4.5-10 10-10h124c5.5 0 10-4.05 10-9s4.5-9 10-9h34c5.5 0 13.182 3.182 17.071 7.071l3.857 3.857c3.889 3.889 7.071 11.571 7.071 17.071V340z"/>
</g>
<polygon id="shadow_1_" fill="#E4E4E4" points="759.13,106.909 712,106.909 712,139.234 754.63,139.197 759.13,145.106 759.13,219.769 638.08,219.769 633.58,213.86 677,145.147 677.999,106.909 637.08,106.909 632.58,101 754.63,0 759.13,0"/>
<polygon id="building" fill="#F4F4F4" points="754.63,101 707.5,101 707.5,139.238 754.63,139.197 754.63,213.86 633.58,213.86 633.524,139.238 672.5,139.238 673.499,101 632.58,101 593.5,0 754.63,0"/>
<polygon id="shadow_2_" fill="#E4E4E4" points="227.531,565.469 35.091,565.242 30.091,557.242 229.909,487.278 234.909,495.278"/>
<polygon id="building_1_" fill="#F4F4F4" points="222.531,557.469 30.091,557.242 30.466,438.53 190.749,438.92 229.909,487.278"/>
<polygon id="road" fill="#fff" stroke="#ddd" stroke-width="0.5" points="800,345.755 566.5,600 632.96,600 800,413"/>
<polygon id="road_1_" fill="#fff" stroke="#ddd" stroke-width="0.5" points="402.5,600 214.833,404 198.5,404 385.5,600"/>
</g>
<g id="fund">
<path id="shadow" display="none" fill="#E4E4E4" d="M425.5 498l54-54h36l36 36h63l27-27v-63l-90-90c0 0 0-54 0-99s-36-72-72-72h-9l-54-54h-63l-36 36h-126V93h-117v180h117v-18h99l36 36v72l-63 63 72 72H425.5z"/>
<g id="roof">
<path fill="#E4E4E4" d="M425.5 499l54-54h36l36 36h63l27-27v-63l-90-90c0 0 0-54 0-99s-36-72-72-72h-9l-54-54h-63l-36 36h-126V94h-117v180h117v-18h99l36 36v72l-63 63 72 72H425.5z"/>
<path fill="#F4F4F4" d="M422.5 494l54-54h36l36 36h63l27-27v-63l-90-90c0 0 0-54 0-99s-36-72-72-72h-9l-54-54h-63l-36 36h-126V89h-117v180h117v-18h99l36 36v72l-63 63 72 72H422.5z"/>
</g>
<g>
<path fill="#E4E4E4" d="M551.5 292c0 0 0-45 0-90s-36-72-72-72h-9l-54-54h-63l-36 36h-54v144h27l36 36H551.5z"/>
<path fill="#fff" d="M548.5 287c0 0 0-45 0-90s-36-72-72-72h-9l-54-54h-63l-36 36h-54v144h27l36 36H548.5z"/>
</g>
<rect id="gal" x="356.544" y="151.68" transform="matrix(0.7071 0.7071 -0.7071 0.7071 241.6393 -216.3689)" fill="#F4F4F4" width="50.912" height="63.64"/>
<polygon id="gal_shadow" fill="#E4E4E4" points="342.917,189.417 341.5,188 386.5,143 422.5,179 420.75,180.75 386,146.25 "/>
</g>
<g>
<path fill="#888" d="M438.641 362.91V368h-2.69v-14.46h4.71c0.967 0 1.804 0.113 2.51 0.34 0.707 0.227 1.291 0.544 1.75 0.95 0.461 0.406 0.801 0.894 1.021 1.46s0.33 1.187 0.33 1.86c0 0.699-0.116 1.342-0.351 1.925 -0.232 0.583-0.583 1.085-1.049 1.505 -0.467 0.42-1.051 0.747-1.75 0.979 -0.701 0.233-1.521 0.351-2.461 0.351H438.641zM438.641 360.81h2.02c0.494 0 0.924-0.062 1.29-0.185s0.671-0.3 0.91-0.53c0.24-0.229 0.42-0.51 0.54-0.84s0.18-0.698 0.18-1.104c0-0.387-0.06-0.737-0.18-1.051 -0.12-0.313-0.3-0.58-0.54-0.8 -0.239-0.22-0.544-0.388-0.91-0.505 -0.366-0.116-0.796-0.175-1.29-0.175h-2.02V360.81z"/>
<path fill="#888" d="M453.15 353.38c0.666 0 1.268 0.095 1.805 0.285s0.995 0.453 1.375 0.79c0.381 0.337 0.672 0.731 0.875 1.185 0.203 0.454 0.305 0.943 0.305 1.471 0 0.46-0.051 0.864-0.154 1.215 -0.104 0.35-0.254 0.655-0.45 0.915s-0.437 0.479-0.72 0.66c-0.283 0.18-0.605 0.33-0.965 0.449 0.866 0.273 1.514 0.69 1.939 1.25 0.427 0.561 0.641 1.264 0.641 2.11 0 0.72-0.134 1.356-0.4 1.91s-0.627 1.019-1.08 1.395c-0.453 0.377-0.979 0.662-1.574 0.855 -0.598 0.193-1.229 0.29-1.896 0.29 -0.728 0-1.36-0.084-1.9-0.25 -0.54-0.167-1.01-0.413-1.409-0.74 -0.4-0.326-0.74-0.727-1.021-1.2 -0.28-0.473-0.521-1.02-0.72-1.64l1.09-0.45c0.187-0.08 0.377-0.12 0.57-0.12 0.173 0 0.328 0.037 0.465 0.11s0.241 0.18 0.314 0.32c0.12 0.233 0.252 0.463 0.395 0.689 0.145 0.227 0.315 0.429 0.516 0.605s0.436 0.319 0.705 0.43 0.592 0.165 0.965 0.165c0.42 0 0.787-0.068 1.1-0.205 0.314-0.137 0.576-0.315 0.785-0.535 0.211-0.22 0.367-0.465 0.471-0.734 0.104-0.271 0.154-0.542 0.154-0.815 0-0.347-0.037-0.661-0.109-0.945 -0.074-0.283-0.227-0.524-0.461-0.725 -0.232-0.2-0.568-0.356-1.004-0.47 -0.438-0.113-1.021-0.17-1.756-0.17v-1.771c0.607 0 1.11-0.054 1.51-0.16 0.4-0.106 0.719-0.255 0.955-0.444 0.237-0.19 0.402-0.419 0.496-0.686 0.093-0.267 0.14-0.56 0.14-0.88 0-0.687-0.187-1.205-0.56-1.555 -0.374-0.351-0.885-0.525-1.531-0.525 -0.586 0-1.072 0.155-1.459 0.465s-0.657 0.707-0.811 1.193c-0.08 0.253-0.189 0.435-0.33 0.544 -0.14 0.11-0.323 0.165-0.55 0.165 -0.106 0-0.22-0.01-0.34-0.029l-1.3-0.227c0.1-0.693 0.293-1.302 0.58-1.825 0.286-0.523 0.645-0.961 1.074-1.311 0.43-0.351 0.924-0.613 1.48-0.79S452.51 353.38 453.15 353.38z"/>
</g>
<g id="shops">
<g id="health">
<polygon points="512.5,251 503.5,242 467.5,278 467.5,287 548.5,287 548.5,251"/>
</g>
<g id="misc">
<polygon points="395.5,89 395.5,116 440.5,116 440.5,98 431.5,89"/>
<path d="M548.5 251c0 0 0-9 0-54s-36-72-72-72h-9l-27-27v81l36 36v54l27-27 9 9H548.5z"/>
<a xlink:href="#amc" xlink:title="AMC Theatres"><polygon fill="#B06489" stroke="#fff" stroke-width="0.5" points="368.5,71 368.5,89 431.5,89 413.5,71"/></a>
<a xlink:href="#att" xlink:title="At&amp;t"><polygon points="350.5,71 314.5,107 314.5,170 332.5,170 368.5,134 368.5,71"/></a>
</g>
<g id="other">
<polygon fill="#bbb" stroke="#fff" stroke-width="0.5" points="386.5,287 386.5,251 404.5,269 404.5,287"/>
<rect x="404.5" y="269" fill="#bbb" stroke="#fff" stroke-width="0.5" width="27" height="18"/>
</g>
<g id="clothing">
<polygon points="422.5,161 395.5,134 395.5,116 440.5,116 440.5,161"/>
<a xlink:href="#pullbear" xlink:title="Pull &amp; Bear"><rect x="260.5" y="107" width="54" height="81"/></a>
<a xlink:href="#gap" xlink:title="GAP"><polygon points="350.5,215 341.5,215 296.5,260 323.5,287 386.5,287 386.5,251"/></a>
</g>
<g id="department">
<polygon points="323.5,188 260.5,188 260.5,251 287.5,251 296.5,260 341.5,215 341.5,206"/>
</g>
</g>
<g id="signs">
<g id="esc-down">
<path id="path2501_1_" fill="#454545" d="M451.231 261.439c-0.575 0-0.897 0.297-0.897 0.904v6.255c0 0.567 0.29 0.864 0.864 0.864h6.281c0.573 0 0.864-0.282 0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904C457.461 261.439 451.23 261.438 451.231 261.439z"/>
<g id="g3999">
<g id="g4001">
<g id="g4003">
<path id="path4005" fill="#fff" d="M453.852 263.549c0.27 0 0.487-0.218 0.487-0.488 0-0.269-0.218-0.487-0.487-0.487s-0.488 0.218-0.488 0.487C453.363 263.331 453.582 263.549 453.852 263.549z"/>
<path id="path4007" fill="#fff" d="M453.852 263.061"/>
</g>
<path id="path4009" fill="#fff" d="M454.334 264.427v-0.307c0-0.655-0.965-0.648-0.965 0v1.253h0.001l-0.911 0.912c-0.086 0.086-0.097 0.089-0.267 0.089 0 0-0.557 0-0.557 0 -0.562 0-0.897 0.505-0.897 0.932s0.336 0.968 0.947 0.968c0 0 0.759 0 0.993 0s0.519-0.089 0.753-0.311l2.908-2.899c0.063-0.055 0.098-0.073 0.204-0.073 0 0 0.4 0 0.718 0 0.346 0 0.835-0.392 0.835-0.957 0-0.559-0.493-0.931-0.863-0.933H456.1c-0.234 0-0.536 0.096-0.716 0.276L454.334 264.427 454.334 264.427z"/>
</g>
<path id="path4011" fill="#fff" d="M455.145 268.304h1.02c0.279 0 0.291-0.431 0-0.431h-0.522l0.993-0.993c0.22-0.22-0.092-0.539-0.325-0.305l-0.979 0.98v-0.517c0.002-0.28-0.434-0.291-0.434 0v1.012C454.897 268.202 454.998 268.304 455.145 268.304z"/>
</g>
<path id="path4013" fill="#454545" d="M456.169 263.585h1.02c0.248 0 0.415 0.277 0.415 0.443s-0.118 0.474-0.422 0.474h-0.613c-0.259 0-0.375 0.037-0.523 0.186l-2.931 2.931c-0.119 0.118-0.27 0.166-0.462 0.166h-0.967c-0.248 0-0.467-0.21-0.467-0.486s0.209-0.43 0.424-0.43h0.663c0.192 0 0.321-0.055 0.431-0.166l2.979-2.98C455.839 263.601 455.961 263.585 456.169 263.585z"/>
</g>
<g id="esc-up">
<path id="path2501_2_" fill="#454545" d="M441.813 261.439c-0.575 0-0.897 0.297-0.897 0.904v6.255c0 0.567 0.29 0.864 0.864 0.864h6.281c0.573 0 0.864-0.282 0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904C448.043 261.439 441.813 261.438 441.813 261.439z"/>
<g id="g3997_1_">
<g id="g3999_1_">
<g id="g4001_1_">
<g id="g4003_1_">
<path id="path4005_1_" fill="#fff" d="M444.435 263.549c0.27 0 0.487-0.218 0.487-0.488 0-0.269-0.218-0.487-0.487-0.487s-0.488 0.218-0.488 0.487C443.946 263.331 444.165 263.549 444.435 263.549z"/>
<path id="path4007_1_" fill="#fff" d="M444.435 263.061"/>
</g>
<path id="path4009_1_" fill="#fff" d="M444.917 264.427v-0.307c0-0.655-0.965-0.648-0.965 0v1.253h0.001l-0.911 0.912c-0.086 0.086-0.097 0.089-0.267 0.089 0 0-0.557 0-0.557 0 -0.562 0-0.897 0.505-0.897 0.932s0.336 0.968 0.947 0.968c0 0 0.759 0 0.993 0s0.519-0.089 0.753-0.311l2.908-2.899c0.063-0.055 0.098-0.073 0.204-0.073 0 0 0.4 0 0.718 0 0.346 0 0.835-0.392 0.835-0.957 0-0.559-0.493-0.931-0.863-0.933h-1.134c-0.234 0-0.536 0.096-0.716 0.276L444.917 264.427 444.917 264.427z"/>
</g>
<path id="path4011_1_" fill="#fff" d="M447.044 266.493h-1.02c-0.279 0-0.291 0.431 0 0.431h0.522l-0.993 0.993c-0.22 0.22 0.092 0.539 0.325 0.305l0.979-0.98v0.517c-0.002 0.28 0.434 0.291 0.434 0v-1.012C447.291 266.595 447.19 266.493 447.044 266.493z"/>
</g>
<path id="path4013_1_" fill="#454545" d="M446.752 263.585h1.02c0.248 0 0.415 0.277 0.415 0.443s-0.118 0.474-0.422 0.474h-0.613c-0.259 0-0.375 0.037-0.523 0.186l-2.931 2.931c-0.119 0.118-0.27 0.166-0.462 0.166h-0.967c-0.248 0-0.467-0.21-0.467-0.486s0.209-0.43 0.424-0.43h0.663c0.192 0 0.321-0.055 0.431-0.166l2.979-2.98C446.422 263.601 446.544 263.585 446.752 263.585z"/>
</g>
</g>
<g id="toilet-women_1_" transform="translate(-8.29e-2,-0.5853944)">
<path id="path2501_3_" fill="#454545" d="M392.091 274.553c-0.575 0-0.897 0.297-0.897 0.904v6.255c0 0.567 0.29 0.864 0.864 0.864h6.281c0.573 0 0.864-0.282 0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904C398.32 274.553 392.09 274.551 392.091 274.553z"/>
<g id="g2503_1_">
<path id="path2507_1_" fill="#fff" d="M395.202 276.779c0.222 0 0.401-0.179 0.401-0.401s-0.18-0.401-0.401-0.401c-0.22 0-0.4 0.179-0.4 0.401S394.982 276.779 395.202 276.779z"/>
<path id="path2511_1_" fill="#fff" d="M395.142 279.324v1.389c0 0.252-0.378 0.252-0.378 0v-1.379h-0.506l0.541-1.883h-0.083l-0.316 1.062c-0.075 0.232-0.394 0.137-0.32-0.111l0.351-1.154c0.037-0.131 0.204-0.365 0.492-0.365h0.265l0 0h0.286c0.287 0 0.453 0.235 0.496 0.365l0.352 1.153c0.069 0.248-0.246 0.35-0.321 0.108l-0.315-1.058h-0.091l0.547 1.883h-0.509v1.381c0 0.25-0.376 0.25-0.376 0v-1.391H395.142z"/>
</g>
</g>
<g id="toilet-men">
<path id="path2449" fill="#454545" d="M414.393 273.864c-0.571 0-0.893 0.295-0.893 0.899v6.222c0 0.565 0.289 0.86 0.859 0.86h6.249c0.57 0 0.86-0.281 0.86-0.86v-6.222c0-0.589-0.29-0.899-0.878-0.899C420.591 273.864 414.391 273.862 414.393 273.864z"/>
<path id="path2455" fill="#fff" d="M417.462 276.042c0.235 0 0.427-0.191 0.427-0.427 0-0.235-0.191-0.427-0.427-0.427s-0.427 0.191-0.427 0.427C417.035 275.851 417.227 276.042 417.462 276.042z"/>
<path id="path2459" fill="#fff" d="M417.005 276.136c-0.302 0-0.545 0.247-0.545 0.554v1.311c0 0.255 0.373 0.255 0.373 0v-1.199h0.089v3.282c0 0.341 0.496 0.331 0.496 0v-1.905h0.085v1.905c0 0.331 0.5 0.341 0.5 0v-3.282h0.085v1.199c0 0.257 0.372 0.257 0.371 0v-1.303c0-0.284-0.22-0.561-0.553-0.561L417.005 276.136z"/>
</g>
</g>
<!-- Image fallback -->
<image xlink:href="images/mall/mall-first.svg" src="images/mall/mall-first.png"/>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@@ -0,0 +1,130 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 800 600">
<g id="ground">
<rect id="background" fill="#eee" width="800" height="600"/>
<g id="parking">
<path fill="#fff" d="M287.5 340c0 5.5-3.182 13.182-7.071 17.071l-39.857 39.857C236.682 400.818 229 404 223.5 404h-142c-5.5 0-10-4.5-10-10v-88c0-5.5 4.5-10 10-10h124c5.5 0 10-4.05 10-9s4.5-9 10-9h34c5.5 0 13.182 3.182 17.071 7.071l3.857 3.857c3.889 3.889 7.071 11.571 7.071 17.071V340z"/>
<path fill="none" stroke="#ddd" stroke-width="0.5" d="M287.5 340c0 5.5-3.182 13.182-7.071 17.071l-39.857 39.857C236.682 400.818 229 404 223.5 404h-142c-5.5 0-10-4.5-10-10v-88c0-5.5 4.5-10 10-10h124c5.5 0 10-4.05 10-9s4.5-9 10-9h34c5.5 0 13.182 3.182 17.071 7.071l3.857 3.857c3.889 3.889 7.071 11.571 7.071 17.071V340z"/>
</g>
<polygon fill="#E4E4E4" points="759.13,106.909 712,106.909 712,139.234 754.63,139.197 759.13,145.106 759.13,219.769 638.08,219.769 633.58,213.86 677,145.147 677.999,106.909 637.08,106.909 632.58,101 754.63,0 759.13,0"/>
<polygon fill="#F4F4F4" points="754.63,101 707.5,101 707.5,139.238 754.63,139.197 754.63,213.86 633.58,213.86 633.524,139.238 672.5,139.238 673.499,101 632.58,101 593.5,0 754.63,0 "/>
<polygon fill="#E4E4E4" points="227.531,565.469 35.091,565.242 30.091,557.242 229.909,487.278 234.909,495.278"/>
<polygon fill="#F4F4F4" points="222.531,557.469 30.091,557.242 30.466,438.53 190.749,438.92 229.909,487.278"/>
<polygon fill="#fff" stroke="#DDDCDC" stroke-width="0.5" points="800,345.755 566.5,600 632.96,600 800,413"/>
<path fill="#ccc" d="M618.646 564.696l0.579-0.621c0.132-0.142 0.282-0.171 0.45-0.087l10.94 5.321c0.126 0.062 0.253 0.134 0.386 0.216 0.133 0.083 0.271 0.169 0.416 0.258 -0.1-0.138-0.193-0.271-0.283-0.4s-0.166-0.255-0.232-0.381l-5.777-10.856c-0.035-0.069-0.051-0.147-0.044-0.232s0.042-0.162 0.105-0.229l0.19-0.205c0.064-0.068 0.135-0.107 0.212-0.117s0.157 0 0.239 0.031l11.232 5.006c0.131 0.057 0.261 0.122 0.393 0.194 0.133 0.073 0.271 0.155 0.416 0.245 -0.095-0.134-0.188-0.262-0.279-0.385 -0.091-0.121-0.172-0.242-0.242-0.362l-6.07-10.542c-0.041-0.064-0.057-0.141-0.047-0.229 0.009-0.088 0.044-0.166 0.107-0.234l0.531-0.57 7.314 12.905 -0.627 0.673 -11.832-5.318c-0.153-0.07-0.309-0.152-0.469-0.246 0.105 0.152 0.197 0.303 0.278 0.451l6.123 11.439 -0.62 0.666L618.646 564.696z"/>
<path fill="#ccc" d="M638.474 549.357c0.381-0.409 0.806-0.723 1.271-0.939 0.467-0.217 0.956-0.327 1.465-0.33 0.508-0.004 1.027 0.106 1.558 0.33 0.528 0.225 1.05 0.576 1.562 1.053 0.107 0.101 0.165 0.186 0.174 0.253 0.01 0.068-0.017 0.136-0.08 0.204l-4.896 5.252 0.139 0.129c0.546 0.51 1.086 0.895 1.617 1.154 0.533 0.259 1.049 0.402 1.547 0.43 0.5 0.027 0.974-0.058 1.424-0.258 0.451-0.199 0.867-0.504 1.249-0.914 0.341-0.365 0.597-0.721 0.767-1.063 0.169-0.344 0.289-0.654 0.359-0.93 0.071-0.276 0.116-0.506 0.135-0.688 0.021-0.182 0.053-0.297 0.099-0.347 0.059-0.063 0.129-0.09 0.209-0.077l0.411 0.027c0.038 0.254 0.029 0.535-0.023 0.847 -0.053 0.31-0.145 0.626-0.275 0.946 -0.129 0.321-0.294 0.642-0.492 0.963 -0.199 0.32-0.426 0.617-0.68 0.89 -0.465 0.497-0.974 0.87-1.528 1.118 -0.556 0.248-1.136 0.365-1.74 0.349 -0.604-0.016-1.223-0.168-1.853-0.455 -0.63-0.288-1.254-0.72-1.873-1.298 -0.521-0.486-0.934-1.01-1.236-1.57 -0.302-0.561-0.482-1.129-0.541-1.707 -0.058-0.578 0.013-1.154 0.212-1.73C637.651 550.421 637.991 549.875 638.474 549.357zM639.003 549.831c-0.35 0.375-0.605 0.765-0.765 1.171s-0.23 0.82-0.214 1.242c0.018 0.42 0.118 0.842 0.3 1.262 0.183 0.422 0.443 0.83 0.782 1.228l4.467-4.79c-0.39-0.363-0.789-0.635-1.199-0.817 -0.408-0.182-0.811-0.274-1.208-0.28 -0.396-0.006-0.778 0.075-1.147 0.24C639.65 549.252 639.311 549.5 639.003 549.831z"/>
<path fill="#ccc" d="M647.647 541.573c0.037 0.098 0.021 0.183-0.049 0.256 -0.049 0.054-0.145 0.095-0.285 0.124 -0.141 0.028-0.313 0.076-0.519 0.145 -0.204 0.068-0.433 0.176-0.683 0.322 -0.249 0.145-0.51 0.363-0.783 0.656 -0.246 0.264-0.432 0.539-0.559 0.826s-0.199 0.566-0.216 0.838 0.02 0.528 0.106 0.77c0.09 0.242 0.226 0.449 0.41 0.621 0.229 0.213 0.473 0.332 0.732 0.355s0.531-0.01 0.816-0.1c0.284-0.091 0.578-0.221 0.881-0.39s0.611-0.345 0.926-0.524c0.315-0.181 0.633-0.348 0.952-0.5 0.32-0.152 0.64-0.258 0.958-0.316 0.32-0.059 0.636-0.051 0.949 0.023s0.617 0.248 0.909 0.52c0.317 0.296 0.56 0.629 0.726 0.997 0.166 0.37 0.248 0.757 0.244 1.159 -0.002 0.403-0.092 0.818-0.271 1.244s-0.456 0.842-0.834 1.246c-0.478 0.512-0.971 0.877-1.479 1.096 -0.508 0.218-1.031 0.35-1.567 0.398l-0.091-0.4c-0.018-0.061-0.021-0.115-0.014-0.163 0.008-0.046 0.037-0.097 0.088-0.151 0.059-0.063 0.17-0.105 0.334-0.125s0.361-0.063 0.59-0.127 0.486-0.172 0.771-0.32c0.284-0.149 0.579-0.387 0.883-0.713 0.287-0.308 0.496-0.619 0.631-0.932 0.132-0.314 0.197-0.617 0.197-0.909s-0.063-0.571-0.184-0.835c-0.123-0.266-0.295-0.5-0.514-0.705 -0.244-0.227-0.502-0.357-0.771-0.391 -0.27-0.032-0.549-0.006-0.838 0.08 -0.29 0.085-0.586 0.213-0.89 0.381s-0.612 0.344-0.929 0.527c-0.318 0.184-0.635 0.353-0.953 0.508 -0.316 0.154-0.635 0.262-0.953 0.32 -0.319 0.058-0.635 0.051-0.946-0.02 -0.311-0.072-0.618-0.25-0.92-0.531 -0.259-0.242-0.456-0.529-0.591-0.864 -0.133-0.335-0.193-0.69-0.182-1.065 0.014-0.375 0.104-0.762 0.275-1.16 0.17-0.396 0.428-0.781 0.773-1.152 0.413-0.443 0.845-0.776 1.293-1 0.449-0.225 0.94-0.357 1.473-0.396L647.647 541.573z"/>
<path fill="#ccc" d="M658.11 543.359c-0.46 0.492-0.953 0.748-1.48 0.766 -0.527 0.019-1.076-0.238-1.647-0.77l-4.974-4.639 -0.975 1.047c-0.051 0.054-0.105 0.084-0.167 0.09 -0.062 0.008-0.118-0.014-0.173-0.064l-0.27-0.252 1.071-1.325 -2.442-2.602c-0.038-0.046-0.061-0.1-0.065-0.163s0.017-0.121 0.066-0.176l0.304-0.325 2.779 2.593 2.135-2.289 0.52 0.483 -2.135 2.289 4.938 4.604c0.199 0.187 0.395 0.321 0.586 0.404 0.192 0.083 0.377 0.122 0.553 0.118 0.176-0.003 0.345-0.045 0.502-0.127 0.156-0.081 0.302-0.191 0.434-0.334 0.164-0.176 0.279-0.351 0.346-0.524 0.068-0.175 0.113-0.336 0.139-0.485 0.025-0.15 0.041-0.278 0.044-0.385 0.003-0.105 0.021-0.176 0.052-0.21 0.037-0.039 0.098-0.056 0.183-0.05l0.485 0.098c0.031 0.375-0.023 0.766-0.165 1.166S658.396 543.052 658.11 543.359z"/>
<path fill="#ccc" d="M664.026 535.504l4.576-4.907 0.636 0.594 -5.272 5.653 -10.348-9.65 0.695-0.746L664.026 535.504z"/>
<path fill="#ccc" d="M674.946 525.068c-0.136 0.146-0.288 0.174-0.457 0.08l-1.023-0.764c0.008 0.382-0.001 0.744-0.029 1.087 -0.027 0.343-0.088 0.671-0.182 0.986 -0.093 0.313-0.227 0.622-0.402 0.923 -0.177 0.301-0.402 0.601-0.68 0.897 -0.232 0.249-0.494 0.457-0.785 0.622 -0.291 0.166-0.597 0.269-0.916 0.309 -0.319 0.039-0.648 0.003-0.988-0.107 -0.338-0.111-0.674-0.322-1.005-0.631 -0.308-0.286-0.51-0.64-0.61-1.061 -0.1-0.422-0.072-0.908 0.08-1.463 0.154-0.556 0.445-1.182 0.875-1.879 0.432-0.695 1.021-1.465 1.77-2.308l-0.76-0.71c-0.674-0.627-1.326-0.965-1.96-1.014s-1.217 0.213-1.749 0.783c-0.326 0.352-0.557 0.695-0.689 1.032 -0.132 0.337-0.219 0.646-0.26 0.925 -0.043 0.281-0.065 0.52-0.067 0.718 -0.003 0.198-0.038 0.333-0.106 0.406 -0.092 0.098-0.203 0.13-0.336 0.097l-0.328-0.073c-0.025-0.734 0.059-1.403 0.256-2.003 0.195-0.602 0.541-1.169 1.037-1.7 0.363-0.39 0.744-0.673 1.141-0.85 0.397-0.177 0.803-0.253 1.213-0.229 0.411 0.023 0.827 0.14 1.246 0.348 0.42 0.211 0.833 0.504 1.237 0.881l4.739 4.42L674.946 525.068zM671.831 527.633c0.264-0.283 0.477-0.57 0.635-0.865 0.16-0.293 0.279-0.592 0.358-0.896 0.079-0.306 0.125-0.615 0.138-0.933 0.013-0.315 0.01-0.641-0.006-0.976l-1.895-1.767c-0.626 0.71-1.129 1.355-1.51 1.936 -0.381 0.578-0.649 1.099-0.806 1.559 -0.155 0.461-0.204 0.863-0.146 1.205s0.218 0.634 0.477 0.875c0.244 0.228 0.492 0.384 0.745 0.469 0.253 0.086 0.498 0.116 0.735 0.091 0.237-0.024 0.465-0.1 0.682-0.225C671.457 527.98 671.653 527.822 671.831 527.633z"/>
<path fill="#ccc" d="M667.327 511.906l6.486 6.05 0.314-0.337c0.064-0.068 0.113-0.143 0.15-0.221 0.039-0.079 0.055-0.189 0.049-0.331l-0.051-5.503c-0.002-0.104 0.005-0.199 0.022-0.287 0.019-0.088 0.067-0.176 0.149-0.264l0.573-0.614 0.056 6.054c0.004 0.095 0.006 0.184 0.007 0.266 0 0.082-0.011 0.164-0.03 0.245 0.111-0.042 0.219-0.063 0.322-0.067s0.215-0.006 0.333-0.004l6.814 0.052 -0.565 0.606c-0.064 0.068-0.134 0.116-0.211 0.146 -0.077 0.027-0.17 0.041-0.278 0.041l-6.126 0.001c-0.166 0.001-0.296 0.021-0.392 0.06 -0.095 0.039-0.21 0.132-0.347 0.277l-0.308 0.33 3.671 3.424 -0.648 0.694 -10.641-9.923L667.327 511.906z"/>
<path fill="#ccc" d="M678.718 506.201c0.381-0.409 0.806-0.723 1.271-0.939 0.467-0.217 0.955-0.326 1.465-0.33 0.508-0.004 1.027 0.107 1.557 0.33 0.529 0.225 1.05 0.576 1.563 1.054 0.106 0.101 0.165 0.185 0.174 0.253 0.01 0.067-0.018 0.135-0.08 0.203l-4.897 5.252 0.14 0.13c0.545 0.509 1.086 0.894 1.617 1.153 0.533 0.259 1.049 0.402 1.547 0.43 0.499 0.027 0.973-0.058 1.424-0.258 0.451-0.199 0.867-0.504 1.249-0.914 0.341-0.365 0.597-0.72 0.766-1.063 0.169-0.344 0.29-0.654 0.36-0.93 0.071-0.276 0.116-0.506 0.135-0.688 0.021-0.182 0.053-0.297 0.099-0.347 0.059-0.063 0.129-0.09 0.209-0.077l0.411 0.027c0.037 0.254 0.029 0.535-0.023 0.847 -0.053 0.311-0.145 0.626-0.275 0.946 -0.129 0.321-0.295 0.643-0.493 0.963s-0.425 0.617-0.679 0.89c-0.465 0.497-0.975 0.87-1.528 1.118 -0.556 0.248-1.136 0.365-1.741 0.349 -0.604-0.016-1.223-0.168-1.852-0.455 -0.63-0.288-1.254-0.72-1.873-1.298 -0.521-0.486-0.934-1.01-1.236-1.57 -0.302-0.56-0.482-1.129-0.541-1.707 -0.058-0.578 0.013-1.154 0.211-1.73C677.896 507.266 678.235 506.719 678.718 506.201zM679.246 506.675c-0.35 0.375-0.604 0.766-0.764 1.171 -0.16 0.407-0.23 0.82-0.214 1.242 0.018 0.421 0.117 0.842 0.3 1.262 0.183 0.422 0.442 0.83 0.782 1.229l4.467-4.791c-0.39-0.363-0.789-0.635-1.199-0.817 -0.408-0.181-0.812-0.274-1.208-0.28 -0.396-0.006-0.778 0.075-1.147 0.24C679.895 506.096 679.555 506.344 679.246 506.675z"/>
<path fill="#ccc" d="M700.746 497.402l-0.538 0.578c-0.064 0.068-0.135 0.107-0.212 0.117s-0.157 0-0.237-0.03l-4.146-1.582 -4.74 5.083 1.874 4.018c0.035 0.068 0.05 0.146 0.043 0.231 -0.006 0.085-0.041 0.161-0.105 0.229l-0.531 0.57 -6.4-13.885 0.695-0.746L700.746 497.402zM690.529 500.823l4.323-4.637 -7.199-2.763c-0.115-0.044-0.24-0.097-0.378-0.16 -0.137-0.063-0.28-0.133-0.429-0.208 0.086 0.144 0.164 0.28 0.238 0.413 0.073 0.131 0.137 0.255 0.193 0.371L690.529 500.823z"/>
<path fill="#ccc" d="M703.973 493.943l-0.573 0.613 -10.141-3.713 0.512-0.549c0.063-0.068 0.133-0.105 0.207-0.113 0.075-0.008 0.145 0 0.207 0.021l7.978 2.953c0.157 0.057 0.299 0.121 0.425 0.191 0.125 0.07 0.25 0.143 0.375 0.213 -0.08-0.119-0.16-0.242-0.239-0.367 -0.08-0.123-0.152-0.258-0.22-0.402l-3.49-7.767c-0.031-0.074-0.043-0.147-0.035-0.218 0.006-0.071 0.037-0.137 0.092-0.194l0.49-0.527L703.973 493.943z"/>
<path fill="#ccc" d="M703.153 479.998c0.381-0.41 0.806-0.723 1.271-0.939 0.467-0.217 0.955-0.327 1.465-0.33 0.508-0.004 1.027 0.106 1.557 0.33 0.529 0.225 1.05 0.576 1.563 1.053 0.106 0.101 0.165 0.186 0.174 0.253 0.01 0.067-0.018 0.136-0.08 0.204l-4.897 5.252 0.14 0.129c0.545 0.51 1.086 0.894 1.617 1.153 0.533 0.259 1.049 0.403 1.547 0.431 0.499 0.027 0.973-0.059 1.424-0.258 0.451-0.2 0.867-0.505 1.249-0.914 0.341-0.365 0.597-0.721 0.766-1.063 0.169-0.344 0.29-0.653 0.36-0.929 0.07-0.277 0.115-0.506 0.135-0.688 0.021-0.182 0.053-0.298 0.098-0.348 0.059-0.063 0.129-0.09 0.21-0.076l0.411 0.026c0.037 0.254 0.029 0.536-0.023 0.847s-0.145 0.627-0.275 0.947c-0.129 0.32-0.295 0.642-0.493 0.962 -0.198 0.321-0.425 0.617-0.679 0.89 -0.465 0.498-0.975 0.871-1.529 1.119s-1.135 0.365-1.74 0.348c-0.604-0.016-1.223-0.168-1.852-0.455 -0.63-0.287-1.254-0.719-1.873-1.297 -0.521-0.486-0.934-1.01-1.236-1.57 -0.302-0.561-0.482-1.129-0.541-1.708 -0.058-0.577 0.013-1.154 0.211-1.729C702.331 481.062 702.671 480.515 703.153 479.998zM703.682 480.471c-0.35 0.375-0.604 0.766-0.764 1.172 -0.16 0.406-0.231 0.82-0.214 1.242 0.018 0.42 0.117 0.842 0.3 1.262 0.182 0.421 0.442 0.83 0.782 1.228l4.467-4.79c-0.391-0.363-0.789-0.636-1.199-0.818 -0.408-0.181-0.812-0.274-1.208-0.279 -0.396-0.006-0.778 0.074-1.147 0.24C704.33 479.893 703.99 480.141 703.682 480.471z"/>
<path fill="#ccc" d="M714.959 482.162l-7.276-6.787 0.354-0.379c0.119-0.128 0.248-0.144 0.389-0.051l1.158 0.958c-0.111-0.723-0.088-1.424 0.068-2.104 0.155-0.68 0.484-1.29 0.989-1.832 0.373-0.399 0.765-0.692 1.177-0.88 0.41-0.186 0.828-0.268 1.254-0.244 0.424 0.022 0.854 0.14 1.286 0.351 0.432 0.212 0.859 0.515 1.284 0.91l4.65 4.338 -0.647 0.694 -4.651-4.338c-0.682-0.636-1.363-0.979-2.042-1.027 -0.679-0.051-1.317 0.248-1.918 0.891 -0.446 0.479-0.736 1.036-0.872 1.676 -0.136 0.639-0.139 1.318-0.01 2.041l5.455 5.088L714.959 482.162z"/>
<path fill="#ccc" d="M715.539 466.949l4.651 4.338c0.684 0.637 1.363 0.979 2.043 1.028 0.68 0.048 1.318-0.249 1.916-0.89 0.443-0.474 0.734-1.029 0.877-1.664 0.142-0.638 0.15-1.318 0.027-2.047l-5.471-5.102 0.648-0.695 7.277 6.787 -0.357 0.383c-0.126 0.135-0.255 0.145-0.386 0.032l-1.144-0.944c0.104 0.729 0.078 1.432-0.08 2.109 -0.16 0.679-0.49 1.289-0.996 1.83 -0.378 0.406-0.771 0.701-1.181 0.885 -0.409 0.186-0.827 0.266-1.251 0.244 -0.426-0.023-0.855-0.141-1.288-0.352 -0.432-0.212-0.859-0.514-1.284-0.91l-4.65-4.338L715.539 466.949z"/>
<path fill="#ccc" d="M724.881 456.697c0.382-0.409 0.806-0.723 1.272-0.939s0.955-0.326 1.465-0.33c0.508-0.004 1.027 0.107 1.557 0.33 0.528 0.225 1.049 0.576 1.562 1.053 0.106 0.101 0.165 0.186 0.175 0.253 0.01 0.068-0.018 0.136-0.08 0.204l-4.898 5.252 0.14 0.129c0.546 0.51 1.086 0.895 1.618 1.154 0.533 0.259 1.049 0.402 1.547 0.43s0.973-0.058 1.424-0.258c0.45-0.199 0.867-0.504 1.248-0.914 0.342-0.365 0.598-0.72 0.766-1.063 0.17-0.344 0.291-0.654 0.361-0.93 0.07-0.276 0.115-0.506 0.135-0.688s0.052-0.297 0.098-0.347c0.059-0.063 0.129-0.09 0.209-0.077l0.412 0.027c0.037 0.254 0.029 0.535-0.023 0.847 -0.053 0.311-0.145 0.626-0.275 0.946 -0.13 0.321-0.295 0.643-0.494 0.963 -0.197 0.32-0.424 0.617-0.679 0.89 -0.464 0.497-0.974 0.87-1.528 1.118 -0.556 0.248-1.135 0.365-1.74 0.349 -0.604-0.016-1.223-0.168-1.852-0.455 -0.631-0.288-1.254-0.72-1.873-1.298 -0.522-0.486-0.935-1.01-1.237-1.57 -0.302-0.56-0.482-1.129-0.54-1.707 -0.059-0.578 0.012-1.154 0.211-1.73C724.059 457.761 724.398 457.215 724.881 456.697zM725.409 457.171c-0.35 0.375-0.604 0.766-0.764 1.171 -0.16 0.407-0.23 0.82-0.213 1.242 0.018 0.421 0.117 0.842 0.299 1.262 0.183 0.422 0.443 0.83 0.783 1.228l4.467-4.79c-0.391-0.363-0.789-0.635-1.199-0.817 -0.409-0.181-0.813-0.274-1.209-0.28 -0.395-0.006-0.778 0.075-1.146 0.24C726.058 456.592 725.718 456.84 725.409 457.171z"/>
<polygon id="road_1_" fill="#fff" stroke="#ddd" stroke-width="0.5" points="402.5,600 214.833,404 198.5,404 385.5,600"/>
</g>
<g id="fund">
<path display="none" fill="#E4E4E4" d="M425.5 498l54-54h36l36 36h63l27-27v-63l-90-90c0 0 0-54 0-99s-36-72-72-72h-9l-54-54h-63l-36 36h-126V93h-117v180h117v-18h99l36 36v72l-63 63 72 72H425.5z"/>
<path fill="#E4E4E4" d="M425.5 499l54-54h36l36 36h63l27-27v-63l-90-90c0 0 0-54 0-99s-36-72-72-72h-9l-54-54h-63l-36 36h-126V94h-117v180h117v-18h99l36 36v72l-63 63 72 72H425.5z"/>
<path fill="#fff" d="M422.5 494l54-54h36l36 36h63l27-27v-63l-90-90c0 0 0-54 0-99s-36-72-72-72h-9l-54-54h-63l-36 36h-126V89h-117v180h117v-18h99l36 36v72l-63 63 72 72H422.5z"/>
</g>
<g id="other">
<path fill="#888" d="M158.641 351.244v5.09h-2.69v-14.46h4.71c0.967 0 1.804 0.113 2.51 0.34s1.29 0.544 1.75 0.95 0.8 0.894 1.02 1.46c0.22 0.566 0.33 1.187 0.33 1.86 0 0.699-0.117 1.342-0.35 1.925s-0.583 1.085-1.05 1.505c-0.467 0.42-1.05 0.747-1.75 0.979 -0.7 0.233-1.52 0.351-2.46 0.351H158.641zM158.641 349.144h2.02c0.494 0 0.923-0.062 1.29-0.185s0.67-0.3 0.91-0.53c0.24-0.229 0.42-0.51 0.54-0.84s0.18-0.698 0.18-1.104c0-0.387-0.06-0.737-0.18-1.051 -0.12-0.313-0.3-0.58-0.54-0.8 -0.24-0.22-0.543-0.388-0.91-0.505 -0.367-0.116-0.796-0.175-1.29-0.175h-2.02V349.144z"/>
<path fill="#888" d="M169.59 354.484h2.93v-8.431c0-0.326 0.01-0.67 0.03-1.029l-2.08 1.739c-0.086 0.074-0.175 0.124-0.265 0.15 -0.09 0.026-0.179 0.04-0.265 0.04 -0.133 0-0.255-0.028-0.365-0.085 -0.11-0.057-0.191-0.122-0.245-0.195l-0.78-1.07 4.41-3.75h2.03v12.631h2.6v1.85h-8V354.484z"/>
</g>
<g id="shops">
<circle fill="#bbb" stroke="#ABABAB" stroke-width="0.5" cx="377.5" cy="179" r="9"/>
<g id="health">
<a xlink:href="#walgreens" xlink:title="Walgreens"><polygon points="242.5,188 215.5,188 197.5,206 197.5,251 242.5,251"/></a>
<a xlink:href="#cvs" xlink:title="CVS Pharmacy"><polygon points="512.5,251 503.5,242 467.5,278 467.5,287 512.5,287"/></a>
<a xlink:href="#sephora" xlink:title="Sephora"><polygon points="458.5,458 422.5,494 386.5,494 386.498,457.998 386.5,422 404.5,404"/></a>
</g>
<g id="misc">
<rect x="242.5" y="107" width="36" height="63"/>
<polygon points="350.5,422 305.5,377 323.5,359 413.5,359"/>
<polygon points="476.5,440 494.5,422 458.5,386 485.501,359.002 539.5,413 512.5,440"/>
<rect x="528.636" y="359.772" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -106.6994 487.4048)" width="12.728" height="25.456"/>
<polygon points="395.5,89 395.5,116 440.5,116 449.5,107 431.5,89"/>
<rect x="542.136" y="379.636" transform="matrix(0.7071 0.7071 -0.7071 0.7071 433.5952 -274.7913)" width="12.728" height="12.728"/>
<rect x="531.272" y="299.408" transform="matrix(0.7071 0.7071 -0.7071 0.7071 384.5474 -291.3796)" width="25.456" height="38.184"/>
<rect x="549.272" y="317.408" transform="matrix(0.7071 0.7071 -0.7071 0.7071 402.5474 -298.8354)" width="25.456" height="38.184"/>
<rect x="260.5" y="188" width="27" height="36"/>
</g>
<g id="other">
<polygon fill="#BCBCBC" stroke="#fff" stroke-width="0.5" points="638.5,449 629.5,449 620.5,440 638.5,422 "/>
<polygon fill="#bbb" stroke="#fff" stroke-width="0.5" points="512.5,287 512.5,251 530.5,269 530.5,287 "/>
<rect x="530.5" y="269" fill="#bbb" stroke="#fff" stroke-width="0.5" width="18" height="18"/>
</g>
<g id="clothing">
<a xlink:href="#sportchek" xlink:title="Sport Chek"><polygon points="242.5,107 188.5,107 188.5,143 215.5,170 242.5,170"/></a>
<polygon points="467.5,287 548.5,287 548.5,296 521.5,323 503.5,323 467.5,287"/>
<a xlink:href="#oldnavy" xlink:title="Old Navy"><polygon points="350.5,71 314.5,107 314.5,170 332.5,170 368.5,134 368.5,71"/></a>
<a xlink:href="#zara" xlink:title="Zara"><polygon points="440.5,170 395.5,215 440.5,260 458.501,260 494.5,224"/></a>
<a xlink:href="#belk" xlink:title="Belk"><polygon points="413.5,359 323.5,359 323.5,287 422.5,287 422.5,296 413.5,305"/></a>
<polygon points="260.5,224 260.5,188 242.5,188 242.5,251 287.5,251 287.5,224"/>
<polygon points="566.5,422 530.5,458 512.5,440 539.5,413 557.5,413"/>
<polygon points="422.5,161 395.5,134 395.5,116 440.5,116 440.5,143"/>
<polygon points="593.5,413 575.5,395 575.5,377 602.5,350 620.5,368 602.5,386 611.5,395"/>
<rect x="567.272" y="335.408" transform="matrix(0.7071 0.7071 -0.7071 0.7071 420.5474 -306.2913)" width="25.456" height="38.184"/>
<a xlink:href="#hm" xlink:title="H&amp;M"><rect x="411.316" y="387.544" transform="matrix(0.7071 0.7071 -0.7071 0.7071 423.6906 -196.8796)" width="76.368" height="50.912"/></a>
<polygon points="485.501,359.002 458.5,386 440.5,368 476.5,332 485.5,341"/>
<rect x="278.5" y="107" width="36" height="63"/>
<rect x="544.772" y="423.544" transform="matrix(0.7071 0.7071 -0.7071 0.7071 480.7789 -262.703)" width="25.456" height="50.912"/>
</g>
<g id="food">
<polygon points="449.5,179 440.5,170 449.5,161 467.5,161"/>
<rect x="456.636" y="161.772" transform="matrix(0.7071 0.7071 -0.7071 0.7071 258.9997 -276.2806)" width="12.728" height="25.456"/>
<a xlink:href="#pizzahut" xlink:title="Pizza Hut"><rect x="465.636" y="170.772" transform="matrix(0.7071 0.7071 -0.7071 0.7071 267.9997 -280.0085)" width="12.728" height="25.456"/></a>
<a xlink:href="#kfc" xlink:title="Kentucky Friend Chicken"><rect x="474.636" y="179.772" transform="matrix(0.7071 0.7071 -0.7071 0.7071 276.9997 -283.7364)" width="12.728" height="25.456"/></a>
<a xlink:href="#mcdonalds" xlink:title="McDonald's"><polygon points="503.5,215 494.5,224 476.5,206 494.5,188 503.5,197"/></a>
<rect x="530.5" y="197" width="18" height="18"/>
<rect x="530.5" y="215" width="18" height="18"/>
<a xlink:href="#applebees" xlink:title="Applebee's"><polygon points="539.5,269 512.5,242 530.5,233 548.5,233 548.5,269"/></a>
<polygon points="467.5,143 458.5,143 458.5,116 467.5,125"/>
<a xlink:href="#subway" xlink:title="Subway"><polygon points="458.5,143 440.5,143 440.5,116 449.5,107 458.5,116"/></a>
<a xlink:href="#starbucks" xlink:title="Starbucks"><polygon points="620.5,440 593.5,413 611.5,395 602.5,386 620.5,368 638.5,386 638.5,422"/></a>
<rect x="506.136" y="343.636" transform="matrix(0.7071 0.7071 -0.7071 0.7071 397.5952 -259.8796)" width="12.728" height="12.728"/>
<rect x="515.136" y="352.636" transform="matrix(0.7071 0.7071 -0.7071 0.7071 406.5952 -263.6075)" width="12.728" height="12.728"/>
<polygon points="395.5,71 395.5,89 431.5,89 413.5,71"/>
<polygon points="548.5,476 584.5,440 611.5,467 611.5,476"/>
</g>
<g id="department">
<a xlink:href="#sears" xlink:title="Sears"><rect x="71.5" y="89" width="117" height="180"/></a>
<a xlink:href="#macys" xlink:title="Macy's"><polygon points="323.5,188 287.5,188 287.5,251 323.5,287 422.5,287"/></a>
<a xlink:href="#jcpenney" xlink:title="JCPenney"><polygon points="386.5,494 332.5,494 260.5,422 305.5,377 368.501,440.001 386.5,440 386.5,458"/></a>
</g>
</g>
<g id="signs">
<g class="escalator-down">
<path fill="#454545" d="M451.231 261.439c-0.575 0-0.897 0.297-0.897 0.904v6.255c0 0.567 0.29 0.864 0.864 0.864h6.281c0.573 0 0.864-0.282 0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904C457.461 261.439 451.23 261.438 451.231 261.439z"/>
<path fill="#fff" d="M453.852 263.549c0.27 0 0.487-0.218 0.487-0.488 0-0.269-0.218-0.487-0.487-0.487s-0.488 0.218-0.488 0.487C453.363 263.331 453.582 263.549 453.852 263.549z"/>
<path fill="#fff" d="M453.852 263.061"/>
<path fill="#fff" d="M454.334 264.427v-0.307c0-0.655-0.965-0.648-0.965 0v1.253h0.001l-0.911 0.912c-0.086 0.086-0.097 0.089-0.267 0.089 0 0-0.557 0-0.557 0 -0.562 0-0.897 0.505-0.897 0.932s0.336 0.968 0.947 0.968c0 0 0.759 0 0.993 0s0.519-0.089 0.753-0.311l2.908-2.899c0.063-0.055 0.098-0.073 0.204-0.073 0 0 0.4 0 0.718 0 0.346 0 0.835-0.392 0.835-0.957 0-0.559-0.493-0.931-0.863-0.933H456.1c-0.234 0-0.536 0.096-0.716 0.276L454.334 264.427 454.334 264.427z"/>
<path fill="#fff" d="M455.145 268.304h1.02c0.279 0 0.291-0.431 0-0.431h-0.522l0.993-0.993c0.22-0.22-0.092-0.539-0.325-0.305l-0.979 0.98v-0.517c0.002-0.28-0.434-0.291-0.434 0v1.012C454.897 268.202 454.998 268.304 455.145 268.304z"/>
<path fill="#454545" d="M456.169 263.585h1.02c0.248 0 0.415 0.277 0.415 0.443s-0.118 0.474-0.422 0.474h-0.613c-0.259 0-0.375 0.037-0.523 0.186l-2.931 2.931c-0.119 0.118-0.27 0.166-0.462 0.166h-0.967c-0.248 0-0.467-0.21-0.467-0.486s0.209-0.43 0.424-0.43h0.663c0.192 0 0.321-0.055 0.431-0.166l2.979-2.98C455.839 263.601 455.961 263.585 456.169 263.585z"/>
</g>
<g class="escalator-up">
<path fill="#454545" d="M441.813 261.439c-0.575 0-0.897 0.297-0.897 0.904v6.255c0 0.567 0.29 0.864 0.864 0.864h6.281c0.573 0 0.864-0.282 0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904C448.043 261.439 441.813 261.438 441.813 261.439z"/>
<path fill="#fff" d="M444.435 263.549c0.27 0 0.487-0.218 0.487-0.488 0-0.269-0.218-0.487-0.487-0.487s-0.488 0.218-0.488 0.487C443.946 263.331 444.165 263.549 444.435 263.549z"/>
<path fill="#fff" d="M444.435 263.061"/>
<path fill="#fff" d="M444.917 264.427v-0.307c0-0.655-0.965-0.648-0.965 0v1.253h0.001l-0.911 0.912c-0.086 0.086-0.097 0.089-0.267 0.089 0 0-0.557 0-0.557 0 -0.562 0-0.897 0.505-0.897 0.932s0.336 0.968 0.947 0.968c0 0 0.759 0 0.993 0s0.519-0.089 0.753-0.311l2.908-2.899c0.063-0.055 0.098-0.073 0.204-0.073 0 0 0.4 0 0.718 0 0.346 0 0.835-0.392 0.835-0.957 0-0.559-0.493-0.931-0.863-0.933h-1.134c-0.234 0-0.536 0.096-0.716 0.276L444.917 264.427 444.917 264.427z"/>
<path fill="#fff" d="M447.044 266.493h-1.02c-0.279 0-0.291 0.431 0 0.431h0.522l-0.993 0.993c-0.22 0.22 0.092 0.539 0.325 0.305l0.979-0.98v0.517c-0.002 0.28 0.434 0.291 0.434 0v-1.012C447.291 266.595 447.19 266.493 447.044 266.493z"/>
<path fill="#454545" d="M446.752 263.585h1.02c0.248 0 0.415 0.277 0.415 0.443s-0.118 0.474-0.422 0.474h-0.613c-0.259 0-0.375 0.037-0.523 0.186l-2.931 2.931c-0.119 0.118-0.27 0.166-0.462 0.166h-0.967c-0.248 0-0.467-0.21-0.467-0.486s0.209-0.43 0.424-0.43h0.663c0.192 0 0.321-0.055 0.431-0.166l2.979-2.98C446.422 263.601 446.544 263.585 446.752 263.585z"/>
</g>
<g class="toilet-women" transform="translate(-8.29e-2,-0.5853944)">
<path fill="#454545" d="M518.599 275.207c-0.575 0-0.897 0.297-0.897 0.904v6.255c0 0.567 0.29 0.864 0.864 0.864h6.281c0.573 0 0.864-0.282 0.864-0.864v-6.255c0-0.592-0.291-0.904-0.883-0.904C524.829 275.207 518.599 275.206 518.599 275.207z"/>
<path fill="#fff" d="M521.711 277.434c0.222 0 0.401-0.179 0.401-0.401s-0.18-0.401-0.401-0.401c-0.22 0-0.4 0.179-0.4 0.401S521.491 277.434 521.711 277.434z"/>
<path fill="#fff" d="M521.651 279.978v1.389c0 0.252-0.378 0.252-0.378 0v-1.379h-0.506l0.541-1.883h-0.083l-0.316 1.062c-0.075 0.232-0.394 0.137-0.32-0.111l0.351-1.154c0.037-0.131 0.204-0.365 0.492-0.365h0.265l0 0h0.286c0.287 0 0.453 0.235 0.496 0.365l0.352 1.153c0.069 0.248-0.246 0.35-0.321 0.108l-0.315-1.058h-0.091l0.547 1.883h-0.509v1.381c0 0.25-0.376 0.25-0.376 0v-1.391H521.651z"/>
</g>
<g class="toilet-men">
<path fill="#454545" d="M536.924 274.519c-0.571 0-0.893 0.295-0.893 0.899v6.222c0 0.565 0.289 0.86 0.859 0.86h6.249c0.57 0 0.86-0.281 0.86-0.86v-6.222c0-0.589-0.29-0.899-0.878-0.899C543.122 274.519 536.922 274.517 536.924 274.519z"/>
<path fill="#fff" d="M539.993 276.697c0.235 0 0.427-0.191 0.427-0.427 0-0.235-0.191-0.427-0.427-0.427s-0.427 0.191-0.427 0.427C539.566 276.506 539.758 276.697 539.993 276.697z"/>
<path fill="#fff" d="M539.536 276.791c-0.302 0-0.545 0.247-0.545 0.554v1.311c0 0.255 0.373 0.255 0.373 0v-1.199h0.089v3.282c0 0.341 0.496 0.331 0.496 0v-1.905h0.085v1.905c0 0.331 0.5 0.341 0.5 0v-3.282h0.085v1.199c0 0.257 0.372 0.257 0.371 0v-1.303c0-0.284-0.22-0.561-0.553-0.561L539.536 276.791z"/>
</g>
</g>
<!-- Image fallback -->
<image xlink:href="images/mall/mall-ground.svg" src="images/mall/mall-ground.png"/>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
/*
HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);

View File

@@ -0,0 +1,172 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend( jQuery.easing,
{
def: 'easeOutQuad',
swing: function (x, t, b, c, d) {
//alert(jQuery.easing.default);
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
easeInQuad: function (x, t, b, c, d) {
return c*(t/=d)*t + b;
},
easeOutQuad: function (x, t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
},
easeInOutQuad: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t + b;
return -c/2 * ((--t)*(t-2) - 1) + b;
},
easeInCubic: function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
},
easeOutCubic: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t + 1) + b;
},
easeInOutCubic: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t + b;
return c/2*((t-=2)*t*t + 2) + b;
},
easeInQuart: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t + b;
},
easeOutQuart: function (x, t, b, c, d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
},
easeInOutQuart: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
},
easeInQuint: function (x, t, b, c, d) {
return c*(t/=d)*t*t*t*t + b;
},
easeOutQuint: function (x, t, b, c, d) {
return c*((t=t/d-1)*t*t*t*t + 1) + b;
},
easeInOutQuint: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
return c/2*((t-=2)*t*t*t*t + 2) + b;
},
easeInSine: function (x, t, b, c, d) {
return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
},
easeOutSine: function (x, t, b, c, d) {
return c * Math.sin(t/d * (Math.PI/2)) + b;
},
easeInOutSine: function (x, t, b, c, d) {
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
},
easeInExpo: function (x, t, b, c, d) {
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
},
easeOutExpo: function (x, t, b, c, d) {
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
},
easeInOutExpo: function (x, t, b, c, d) {
if (t==0) return b;
if (t==d) return b+c;
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
},
easeInCirc: function (x, t, b, c, d) {
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
},
easeOutCirc: function (x, t, b, c, d) {
return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
},
easeInOutCirc: function (x, t, b, c, d) {
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
},
easeInElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
},
easeOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
},
easeInOutElastic: function (x, t, b, c, d) {
var s=1.70158;var p=0;var a=c;
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
if (a < Math.abs(c)) { a=c; var s=p/4; }
else var s = p/(2*Math.PI) * Math.asin (c/a);
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
},
easeInBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*(t/=d)*t*((s+1)*t - s) + b;
},
easeOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
},
easeInOutBack: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
},
easeInBounce: function (x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},
easeOutBounce: function (x, t, b, c, d) {
if ((t/=d) < (1/2.75)) {
return c*(7.5625*t*t) + b;
} else if (t < (2/2.75)) {
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
} else if (t < (2.5/2.75)) {
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
} else {
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
}
},
easeInOutBounce: function (x, t, b, c, d) {
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
}
});

View File

@@ -0,0 +1,117 @@
/*! Copyright (c) 2013 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.1.3
*
* Requires: 1.2.2+
*/
(function (factory) {
if ( typeof define === 'function' && define.amd ) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS style for Browserify
module.exports = factory;
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'];
var toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'];
var lowestDelta, lowestDeltaXY;
if ( $.event.fixHooks ) {
for ( var i = toFix.length; i; ) {
$.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
}
}
$.event.special.mousewheel = {
setup: function() {
if ( this.addEventListener ) {
for ( var i = toBind.length; i; ) {
this.addEventListener( toBind[--i], handler, false );
}
} else {
this.onmousewheel = handler;
}
},
teardown: function() {
if ( this.removeEventListener ) {
for ( var i = toBind.length; i; ) {
this.removeEventListener( toBind[--i], handler, false );
}
} else {
this.onmousewheel = null;
}
}
};
$.fn.extend({
mousewheel: function(fn) {
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
},
unmousewheel: function(fn) {
return this.unbind("mousewheel", fn);
}
});
function handler(event) {
var orgEvent = event || window.event,
args = [].slice.call(arguments, 1),
delta = 0,
deltaX = 0,
deltaY = 0,
absDelta = 0,
absDeltaXY = 0,
fn;
event = $.event.fix(orgEvent);
event.type = "mousewheel";
// Old school scrollwheel delta
if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta; }
if ( orgEvent.detail ) { delta = orgEvent.detail * -1; }
// New school wheel delta (wheel event)
if ( orgEvent.deltaY ) {
deltaY = orgEvent.deltaY * -1;
delta = deltaY;
}
if ( orgEvent.deltaX ) {
deltaX = orgEvent.deltaX;
delta = deltaX * -1;
}
// Webkit
if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY; }
if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = orgEvent.wheelDeltaX * -1; }
// Look for lowest delta to normalize the delta values
absDelta = Math.abs(delta);
if ( !lowestDelta || absDelta < lowestDelta ) { lowestDelta = absDelta; }
absDeltaXY = Math.max(Math.abs(deltaY), Math.abs(deltaX));
if ( !lowestDeltaXY || absDeltaXY < lowestDeltaXY ) { lowestDeltaXY = absDeltaXY; }
// Get a whole value for the deltas
fn = delta > 0 ? 'floor' : 'ceil';
delta = Math[fn](delta / lowestDelta);
deltaX = Math[fn](deltaX / lowestDeltaXY);
deltaY = Math[fn](deltaY / lowestDeltaXY);
// Add event and delta to the front of the arguments
args.unshift(event, delta, deltaX, deltaY);
return ($.event.dispatch || $.event.handle).apply(this, args);
}
}));

View File

@@ -0,0 +1,302 @@
{
"mapwidth": "800",
"mapheight": "600",
"categories": [
{
"id": "food",
"title": "Fast-foods & Restaurants",
"icon": "vendor/plugins/mapplic/images/food.png",
"color": "#4a89dc",
"show": "false"
},
{
"id": "dep",
"title": "Department Stores",
"icon": "vendor/plugins/mapplic/images/cart.png",
"color": "#70ca63",
"show": "false"
},
{
"id": "clothing",
"title": "Clothing & Accessories",
"icon": "vendor/plugins/mapplic/images/cloth.png",
"color": "#3bafda",
"show": "false"
},
{
"id": "health",
"title": "Health & Cosmetics",
"icon": "vendor/plugins/mapplic/images/health.png",
"color": "#f6bb42",
"show": "false"
},
{
"id": "misc",
"title": "Miscellaneous",
"icon": "vendor/plugins/mapplic/images/misc.png",
"color": "#967adc",
"show": "false"
}
],
"levels": [
{
"id": "basement",
"title": "Basement",
"map": "vendor/plugins/mapplic/images/mall/mall-basement.png",
"minimap": "vendor/plugins/mapplic/images/mall/mall-basement-small.jpg",
"locations": [
{
"id": "petco",
"title": "Petco",
"about": "Lorem ipsum",
"description": "Lorem ipsum",
"category": "misc",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/petco.jpg",
"x": "0.55",
"y": "0.3"
}
]
},
{
"id": "ground",
"title": "Ground Floor",
"map": "vendor/plugins/mapplic/images/mall/mall-ground.png",
"minimap": "vendor/plugins/mapplic/images/mall/mall-ground-small.jpg",
"show": "true",
"locations": [
{
"id": "applebees",
"title": "Applebee's",
"about": "Lorem ipsum",
"description": "See you tomorrow",
"category": "food",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/applebees.jpg",
"x": "0.665",
"y": "0.41",
"zoom": "5"
},
{
"id": "kfc",
"title": "KFC",
"about": "Lorem ipsum",
"description": "Kentucky Fried Chicken",
"category": "food",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/kfc.jpg",
"tooltip": "default",
"x": "0.6012",
"y": "0.32",
"zoom": "8"
},
{
"id": "mcdonalds",
"title": "McDonald's",
"about": "Lorem ipsum",
"description": "Additional information",
"category": "food",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/mcdonalds.jpg",
"link": "http://themeforest.net/user/AdminDesigns",
"x": "0.615",
"y": "0.3416",
"zoom": "8"
},
{
"id": "pizzahut",
"title": "Pizza Hut",
"about": "Lorem ipsum",
"description": "Make it great",
"category": "food",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/pizzahut.jpg",
"x": "0.59",
"y": "0.305",
"zoom": "8"
},
{
"id": "starbucks",
"title": "Starbucks",
"about": "Lorem ipsum",
"description": "The coffee company",
"category": "food",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/starbucks.jpg",
"x": "0.775",
"y": "0.6833",
"zoom": "6"
},
{
"id": "subway",
"title": "Subway",
"about": "Lorem ipsum",
"description": "Eat fresh.",
"category": "food",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/subway.jpg",
"x": "0.5625",
"y": "0.2166",
"zoom": "8"
},
{
"id": "sears",
"title": "Sears",
"about": "Lorem ipsum",
"description": "<p>Sears depártment store<p><img src=\"vendor/plugins/mapplic/images/logo.png\" alt=\"Mapplic\">",
"category": "dep",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/sears.jpg",
"x": "0.1616",
"y": "0.2706",
"zoom": "3"
},
{
"id": "macys",
"title": "Macy's",
"about": "Lorem ipsum",
"description": "Macy's <i>department</i> store",
"category": "dep",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/macys.jpg",
"x": "0.425",
"y": "0.4"
},
{
"id": "jcpenney",
"title": "JCPenney",
"about": "Lorem ipsum",
"description": "JCPenney department store",
"category": "dep",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/jcpenney.jpg",
"x": "0.4125",
"y": "0.7416"
},
{
"id": "cvs",
"title": "CVS Pharmacy",
"about": "Lorem ipsum",
"description": "Lorem ipsum <a href=\"http://www.codecanyon.net\">dolor sit</a> amet, consectetur.",
"category": "health",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/cvs.jpg",
"link": "http://themeforest.net/user/AdminDesigns",
"x": "0.6187",
"y": "0.45"
},
{
"id": "walgreens",
"title": "Walgreens",
"about": "Lorem ipsum",
"description": "At the corner of Happy & Healthy",
"category": "health",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/walgreens.jpg",
"x": "0.275",
"y": "0.3666"
},
{
"id": "sephora",
"title": "Sephora",
"about": "Lorem ipsum",
"description": "Makeup, fragrance, skincare",
"category": "health",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/sephora.jpg",
"link": "http://themeforest.net/user/AdminDesigns",
"x": "0.5125",
"y": "0.7416"
},
{
"id": "belk",
"title": "Belk",
"about": "Lorem ipsum",
"description": "<p>Lorem ipsum</p><img src=\"vendor/plugins/mapplic/images/logo.png\" alt=\"Mapplic\">",
"category": "clothing",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/belk.jpg",
"link": "http://themeforest.net/user/AdminDesigns",
"x": "0.4627",
"y": "0.5202"
},
{
"id": "hm",
"title": "H&M",
"about": "Lorem ipsum",
"description": "Lorem ipsum",
"category": "clothing",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/hm.jpg",
"x": "0.5625",
"y": "0.6866"
},
{
"id": "oldnavy",
"title": "Old Navy",
"about": "Lorem ipsum",
"description": "Lorem ipsum",
"category": "clothing",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/oldnavy.jpg",
"x": "0.4287",
"y": "0.2066"
},
{
"id": "sportchek",
"title": "Sport Chek",
"about": "Lorem ipsum",
"description": "<img src=\"vendor/plugins/mapplic/images/logo.png\" alt=\"Mapplic\"><p>Lorem ipsum</p>",
"category": "clothing",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/sportchek.jpg",
"x": "0.27",
"y": "0.2333"
},
{
"id": "zara",
"title": "Zara",
"about": "Lorem ipsum",
"description": "<img src=\"vendor/plugins/mapplic/images/logo.png\" alt=\"Mapplic\"><p>Lorem ipsum</p>",
"category": "clothing",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/zara.jpg",
"link": "http://themeforest.net/user/AdminDesigns",
"x": "0.5573",
"y": "0.3503"
}
]
},
{
"id": "first",
"title": "First Floor",
"map": "vendor/plugins/mapplic/images/mall/mall-first.png",
"minimap": "vendor/plugins/mapplic/images/mall/mall-first-small.jpg",
"locations": [
{
"id": "gap",
"title": "GAP",
"about": "Lorem ipsum",
"description": "Lorem ipsum",
"category": "clothing",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/gap.jpg",
"x": "0.4375",
"y": "0.425"
},
{
"id": "pullbear",
"title": "Pull & Bear",
"about": "Lorem ipsum",
"description": "Lorem ipsum",
"category": "clothing",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/pullbear.jpg",
"x": "0.3625",
"y": "0.25"
},
{
"id": "amc",
"title": "AMC Theatres",
"about": "Lorem ipsum",
"description": "Additional information",
"category": "misc",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/amc.jpg",
"x": "0.6087",
"y": "0.305"
},
{
"id": "att",
"title": "AT&T",
"about": "Lorem ipsum",
"description": "Additional information",
"category": "misc",
"thumbnail": "vendor/plugins/mapplic/images/mall/thumb/att.jpg",
"x": "0.4287",
"y": "0.2083"
}
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1023 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,19 @@
a {
outline: none;
}
a img {
border: none;
}
.im-minimap {
border: 1px solid #666;
}
.im-minimap-overlay {
background-image: url(images/alpha50.png);
}
.im-list-category > a span {
background-image: url(images/alpha20.png);
}

View File

@@ -0,0 +1,534 @@
svg {
width: 100%;
height: 100%;
}
svg a {
cursor: pointer;
}
.mapplic-element a {
color: #333;
text-decoration: none !important;
}
.mapplic-element input,
.mapplic-element button {
outline: none;
}
.mapplic-element * { -webkit-tap-highlight-color: rgba(0,0,0,0); }
.mapplic-element {
background-color: #f8f8f8;
font-size: 0;
overflow: hidden;
}
/* Fullscreen */
:-webkit-full-screen {
width: 100%;
height: 100% !important;
}
:-webkit-full-screen .mapplic-fullscreen-button {
background-image: url(images/fullscreen-exit.png);
}
/* Preloader */
.mapplic-element.mapplic-loading {
background: #f8f8f8 url(images/loader.gif) no-repeat center;
}
.mapplic-element > * {
opacity: 1;
-webkit-transition: opacity 0.6s;
-moz-transition: opacity 0.6s;
transition: opacity 0.6s;
}
.mapplic-element.mapplic-loading > * {
opacity: 0;
}
/* Main elements */
.mapplic-container {
background-color: #f8f8f8;
display: inline-block;
overflow: hidden;
position: relative;
width: 70%;
height: 100%;
border-left: 1px solid #e5e5e5;
}
:-webkit-full-screen .mapplic-container {
width: 80%;
}
.mapplic-map {
position: absolute;
left: 0;
top: 0;
}
/* Map layer */
.mapplic-layer {
top: 0;
left: 0;
width: 100%;
height: 100%;
position: absolute;
}
.mapplic-layer img {
width: 100%;
}
.mapplic-map-image {
cursor: url(images/openhand.cur), default;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.mapplic-map.mapplic-dragging .mapplic-map-image {
cursor: url(images/closedhand.cur), move;
}
.mapplic-locations {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.mapplic-pin {
background-image: url(images/pin-red.png);
background-repeat: no-repeat;
background-position: center;
width: 30px;
height: 30px;
margin-top: -25px;
margin-left: -10px;
position: absolute;
}
.mapplic-pin.mapplic-animate {
-webkit-animation: bounce-in 0.4s forwards;
animation: bounce-in 0.4s forwards;
}
@-webkit-keyframes bounce-in {
0% {margin-top: -120px; opacity: 0;}
33% {margin-top: -25px; opacity: 1;}
66% {margin-top: -30px;}
100% {margin-top: -25px; opacity: 1;}
}
.mapplic-pin.orange { background-image: url(images/pin-orange.png); }
.mapplic-pin.green { background-image: url(images/pin-green.png); }
.mapplic-pin.blue { background-image: url(images/pin-blue.png); }
.mapplic-pin.purple { background-image: url(images/pin-purple.png); }
/* Minimap */
.mapplic-minimap {
border: 1px solid rgba(0, 0, 0, 0.4);
position: absolute;
width: 140px;
margin: 10px;
bottom: 0;
right: 0;
overflow: hidden;
}
.mapplic-minimap img {
width: 100%;
}
.mapplic-minimap-overlay {
background-color: rgba(0, 0, 0, 0.5);
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.mapplic-minimap .mapplic-minimap-active {
position: absolute;
opacity: 1;
top: 0;
left: 0;
-webkit-transition: clip 0.1s;
-moz-transition: clip 0.1s;
transition: clip 0.1s;
}
.mapplic-minimap-background {
-webkit-filter: blur(2px);
}
/* Clear Button */
.mapplic-clear-button {
background-color: #fff;
background-image: url(images/target.png);
background-repeat: no-repeat;
background-position: center;
margin: 10px;
width: 28px;
height: 28px;
position: absolute;
bottom: 0;
left: 0;
}
/* Fullscreen Button */
.mapplic-fullscreen-button {
background-color: #fff;
background-image: url(images/fullscreen.png);
background-repeat: no-repeat;
background-position: center;
margin: 10px;
width: 28px;
height: 28px;
position: absolute;
top: 0;
left: 0;
}
/* Levels */
.mapplic-levels {
background-color: #fff;
position: absolute;
top: 0;
right: 0;
margin: 10px;
overflow: hidden;
}
.mapplic-levels > * {
display: block;
width: 100%;
}
.mapplic-levels-select {
border: none;
margin: 0;
padding: 6px 2px;
font-size: 12px;
outline: none;
}
.mapplic-levels a {
background-color: #fff;
background-repeat: no-repeat;
background-position: center;
border: none;
cursor: pointer;
height: 20px;
width: 100%;
}
.mapplic-levels .mapplic-levels-up {
background-image: url(images/arrow-up.png);
border-bottom: 1px solid #eee;
}
.mapplic-levels .mapplic-levels-down {
background-image: url(images/arrow-down.png);
border-top: 1px solid #eee;
}
.mapplic-levels a.disabled {
background-color: #eee;
cursor: default;
}
/* Sidebar */
.mapplic-sidebar {
background-color: #fafafa;
width: 30%;
height: 100%;
float: left;
position: relative;
}
:-webkit-full-screen .mapplic-sidebar {
width: 20%;
}
/* Search */
.mapplic-search-form {
border-bottom: 1px solid #eee;
padding: 20px 25px;
margin: 0;
width: 100%;
position: relative;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.mapplic-search-input {
background-image: url(images/viewer.png);
background-repeat: no-repeat;
background-position: 8px;
border: 2px solid #eee;
border-radius: 2px;
font-size: 14px;
font-family: inherit;
line-height: 20px;
height: 42px;
margin: 0;
padding: 8px 36px;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-transition: border-color 0.1s;
-moz-transition: border-color 0.1s;
transition: border-color 0.1s;
}
.mapplic-search-input:focus {
border-color: #6ed8dd;
}
.mapplic-search-clear {
display: none;
position: absolute;
cursor: pointer;
font-size: 16px;
font-weight: 400;
color: #AAA;
top: 21px;
right: 25px;
margin: 0;
padding: 0;
width: 18px;
height: 18px;
border: 0;
background: transparent;
}
.mapplic-search-clear:hover {
color: #555;
}
.mapplic-search-clear:after {
content: "\f00d";
font-family: "FontAwesome";
}
.mapplic-not-found {
color: #bbb;
display: none;
font-size: 13px;
padding: 0 30px;
position: absolute;
text-align: center;
top: 100px;
}
/* List */
.mapplic-list-container {
padding: 25px;
height: 100%;
overflow-y: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.mapplic-list {
list-style: none;
padding: 0;
margin: 0;
overflow-y: auto;
}
.mapplic-list-container ol {
list-style: none;
padding: 0;
margin: 0;
}
.mapplic-list-container li {
border-color: inherit;
margin-bottom: 10px;
}
.mapplic-list-category > a,
.mapplic-list-category > a:hover,
.mapplic-list-category > a:focus {
background-color: #aaa;
color: #fff;
display: block;
font-size: 16px;
line-height: 26px;
padding: 12px 12px 12px 12px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
box-sizing: border-box;
}
.mapplic-list-category ol {
border-bottom: 3px solid #eee !important;
}
.mapplic-list-thumbnail {
border-radius: 2px;
float: left;
margin-right: 10px;
}
.mapplic-list-category > a .mapplic-list-count {
background-color: rgba(0, 0, 0, 0.1);
border-radius: 2px;
float: right;
font-size: 12px;
line-height: 20px;
padding: 0 6px;
margin-left: 10px;
text-align: center;
margin-top: 4px;
}
.mapplic-list-location > a {
background-color: #fff;
border-left: 2px solid transparent;
border-bottom: 1px solid #eee;
display: block;
font-size: 14px;
padding: 10px;
min-height: 50px;
-webkit-transition: border-color 0.2s;
-moz-transition: border-color 0.2s;
transition: border-color 0.2s;
}
.mapplic-list-location > a:hover {
background-color: #fdfdfd;
border-left: 2px solid;
border-color: inherit;
border-bottom: 1px solid #eee;
}
.mapplic-list-location h4 {
color: #444;
font-size: 14px;
font-weight: normal;
margin: 4px 0 8px 0;
}
.mapplic-list-location span {
color: #bbb;
font-size: 13px;
font-weight: normal;
}
/* Tooltip */
.mapplic-tooltip {
background-color: #fff;
box-shadow: 0 0 6px rgba(0, 0, 0, 0.2);
display: none;
max-width: 280px;
min-width: 120px;
margin-top: -76px;
padding: 10px 14px;
position: absolute;
}
.mapplic-tooltip-title {
color: #444;
font-size: 16px;
font-weight: normal;
margin: 0 0 16px 0;
}
.mapplic-hovertip {
min-width: 50px;
pointer-events: none;
}
.mapplic-hovertip .mapplic-tooltip-title {
margin: 0;
}
.mapplic-tooltip-content {
max-height: 160px;
}
.mapplic-tooltip-description,
.mapplic-tooltip p {
color: #bbb;
font-size: 13px;
line-height: 16px;
}
.mapplic-tooltip-link {
background-color: #ccc;
color: #fff !important;
float: right;
font-size: 14px;
line-height: 26px;
padding: 0 8px;
margin-top: 10px;
}
.mapplic-tooltip-link:hover {
background-color: #aaa;
}
.mapplic-tooltip img {
max-width: 100%;
}
.mapplic-tooltip-triangle {
background-image: url(images/tooltip-triangle.png);
width: 14px;
height: 6px;
position: absolute;
bottom: 0;
left: 50%;
margin-bottom: -6px;
margin-left: -7px;
}
.mapplic-tooltip-close {
background-color: #eee;
background-image: url(images/cross.png);
background-position: center;
background-repeat: no-repeat;
background-color: transparent;
border: none;
cursor: pointer;
float: right;
margin: 0 -4px 0 0;
width: 10px;
height: 10px;
}
/* Coordinates */
.mapplic-coordinates {
background-color: rgba(255, 255, 255, 0.9);
color: #333;
position: absolute;
margin: 10px;
margin-left: -80px;
padding: 4px 6px;
font-size: 14px;
top: 0;
left: 50%;
pointer-events: none;
}
/* Sidebar addition */
.mapplic-sidebar-add {
font-size: 13px;
}

View File

@@ -0,0 +1,935 @@
/**
* Mapplic - Custom Interactive Map Plugin by @sekler
* http://www.mapplic.com
*/
(function($) {
var Mapplic = function() {
var self = this;
self.o = {
source: 'locations.json',
height: 420,
locations: true,
minimap: true,
sidebar: true,
deeplinking: true,
search: true,
clearbutton: true,
hovertip: true,
fullscreen: false,
developer: false,
animate: true,
maxscale: 4,
sidebarAdd: undefined
};
self.init = function(el, params) {
// Extend options
self.o = $.extend(self.o, params);
self.x = 0;
self.y = 0;
self.scale = 1;
self.el = el.addClass('mapplic-element mapplic-loading').height(self.o.height);
// Process JSON file
$.getJSON(self.o.source, function(data) { // Success
processData(data);
self.el.removeClass('mapplic-loading');
// Controls
addControls();
}).fail(function() { // Failure: couldn't load JSON file, or it is invalid.
console.error('Couldn\'t load map data. (Make sure you are running the script through a server and not just opening the html file with your browser)');
alert('Data file missing or invalid!');
});
return self;
}
// Tooltip
function Tooltip() {
this.el = null;
this.shift = 6;
this.drop = 0;
this.init = function() {
var s = this;
// Construct
this.el = $('<div></div>').addClass('mapplic-tooltip');
$('<a></a>').addClass('mapplic-tooltip-close').attr('href', '#').click(function(e) {
e.preventDefault();
self.deeplinking.clear();
s.hide();
}).appendTo(this.el);
this.image = $('<img>').addClass('mapplic-tooltip-image').hide().appendTo(this.el);
this.title = $('<h4></h4>').addClass('mapplic-tooltip-title').appendTo(this.el);
this.content = $('<div></div>').addClass('mapplic-tooltip-content').appendTo(this.el);
this.desc = $('<div></div>').addClass('mapplic-tooltip-description').appendTo(this.content);
this.link = $('<a>More</a>').addClass('mapplic-tooltip-link').attr('href', '#').hide().appendTo(this.el);
$('<div></div>').addClass('mapplic-tooltip-triangle').prependTo(this.el);
// Append
self.map.append(this.el);
}
this.set = function(location) {
if (location) {
if (location.action == 'none') {
this.el.stop().fadeOut(300);
return;
}
var s = this;
if (location.image) this.image.attr('src', location.image).show();
else this.image.hide();
if (location.link) this.link.attr('href', location.link).show();
else this.link.hide();
this.title.text(location.title);
this.desc.html(location.description);
// Shift
var pinselect = $('.mapplic-pin[data-location="' + location.id + '"]');
if (pinselect.length == 0) {
this.shift = 6;
}
else this.shift = pinselect.height() + 6;
// Loading & positioning
$('img', this.desc).load(function() {
s.position(location);
});
this.position(location);
}
}
this.show = function(location) {
if (location) {
if (location.action == 'none') {
this.el.stop().fadeOut(300);
return;
}
var s = this;
if (location.image) this.image.attr('src', location.image).show();
else this.image.hide();
if (location.link) this.link.attr('href', location.link).show();
else this.link.hide();
this.title.text(location.title);
this.desc.html(location.description);
// Shift
var pinselect = $('.mapplic-pin[data-location="' + location.id + '"]');
if (pinselect.length == 0) {
this.shift = 6;
}
else this.shift = pinselect.height() + 6;
// Loading & positioning
$('img', this.desc).load(function() {
s.position(location);
});
this.position(location);
// Making it visible
this.el.stop().fadeIn(200).show();
}
}
this.position = function(location) {
var x = location.x * 100;
y = location.y * 100;
mt = -this.el.outerHeight() - this.shift,
ml = -this.el.outerWidth() / 2;
this.el.css({
left: x + '%',
top: y + '%',
marginTop: mt,
marginLeft: ml
});
this.drop = this.el.outerHeight() + this.shift;
}
this.hide = function() {
var s = this;
this.el.stop().fadeOut(300, function() {
s.desc.empty();
});
}
}
// Deeplinking
function Deeplinking() {
this.init = function() {
// Check hash for location
var id = location.hash.slice(1);
if (id) {
var locationData = getLocationData(id);
self.tooltip.set(locationData);
showLocation(id, 0);
self.tooltip.show(locationData);
}
else zoomTo(0.5, 0.5, 1, 0);
// Hashchange
$(window).on('hashchange', function() {
var id = location.hash.slice(1);
if (id) {
var locationData = getLocationData(id);
self.tooltip.set(locationData);
showLocation(id, 800);
self.tooltip.show(locationData);
}
});
}
this.clear = function() {
// if IE 6-8, else normal browsers
if (history.pushState) history.pushState('', document.title, window.location.pathname);
else window.location.hash = '';
}
}
// HoverTooltip
function HoverTooltip() {
this.el = null;
this.shift = 6;
this.init = function() {
var s = this;
// Construct
this.el = $('<div></div>').addClass('mapplic-tooltip mapplic-hovertip');
this.title = $('<h4></h4>').addClass('mapplic-tooltip-title').appendTo(this.el);
$('<div></div>').addClass('mapplic-tooltip-triangle').appendTo(this.el);
// Events
$(self.map).on('mouseover', '.mapplic-layer a', function() {
var data = '';
if ($(this).hasClass('mapplic-pin')) {
data = $(this).data('location');
s.shift = $(this).height() + 6;
}
else {
data = $(this).attr('xlink:href').slice(1);
s.shift = 6;
}
var location = getLocationData(data);
if (location) s.show(location);
}).on('mouseout', function() {
s.hide();
});
self.map.append(this.el);
}
this.show = function(location) {
this.title.text(location.title);
var x = location.x * 100,
y = location.y * 100,
mt = -this.el.outerHeight() - this.shift,
ml = -this.el.outerWidth() / 2;
this.el.css({
left: x + '%',
top: y + '%',
marginTop: mt,
marginLeft: ml
});
this.el.stop().fadeIn(100);
}
this.hide = function() {
this.el.stop().fadeOut(200);
}
}
// Minimap
function Minimap() {
this.el = null;
this.init = function() {
this.el = $('<div></div>').addClass('mapplic-minimap').appendTo(self.container);
this.el.css('height', this.el.width() * self.hw_ratio);
this.el.click(function(e) {
e.preventDefault();
var x = (e.pageX - $(this).offset().left) / $(this).width(),
y = (e.pageY - $(this).offset().top) / $(this).height();
zoomTo(x, y, self.scale / self.fitscale, 100);
});
}
this.addLayer = function(data) {
var layer = $('<div></div>').addClass('mapplic-minimap-layer').addClass(data.id).appendTo(this.el);
$('<img>').attr('src', data.minimap).addClass('mapplic-minimap-background').appendTo(layer);
$('<div></div>').addClass('mapplic-minimap-overlay').appendTo(layer);
$('<img>').attr('src', data.minimap).addClass('mapplic-minimap-active').appendTo(layer);
}
this.show = function(target) {
$('.mapplic-minimap-layer:visible', this.el).hide();
$('.mapplic-minimap-layer.' + target, this.el).show();
}
this.update = function(x, y) {
var active = $('.mapplic-minimap-active', this.el);
if (x === undefined) x = self.x;
if (y === undefined) y = self.y;
var width = Math.round(self.container.width() / self.contentWidth / self.scale * this.el.width()),
height = Math.round(self.container.height() / self.contentHeight / self.scale * this.el.height()),
top = Math.round(-y / self.contentHeight / self.scale * this.el.height()),
left = Math.round(-x / self.contentWidth / self.scale * this.el.width()),
right = left + width,
bottom = top + height;
active.css('clip', 'rect(' + top + 'px, ' + right + 'px, ' + bottom + 'px, ' + left + 'px)');
}
}
// Sidebar
function Sidebar() {
this.el = null;
this.list = null;
this.init = function() {
var s = this;
this.el = $('<div></div>').addClass('mapplic-sidebar').appendTo(self.el);
if (self.o.search) {
var form = $('<form></form>').addClass('mapplic-search-form').submit(function() {
return false;
}).appendTo(this.el);
self.clear = $('<button></button>').addClass('mapplic-search-clear').click(function() {
input.val('');
input.keyup();
}).appendTo(form);
var input = $('<input>').attr({'type': 'text', 'spellcheck': 'false', 'placeholder': 'Search for location...'}).addClass('mapplic-search-input').keyup(function() {
var keyword = $(this).val();
s.search(keyword);
}).prependTo(form);
}
var listContainer = $('<div></div>').addClass('mapplic-list-container').appendTo(this.el);
this.list = $('<ol></ol>').addClass('mapplic-list').appendTo(listContainer);
this.notfound = $('<p></p>').addClass('mapplic-not-found').text('Nothing found. Please try a different search.').appendTo(listContainer);
if (!self.o.search) listContainer.css('padding-top', '0');
if(self.o.sidebarAdd) {
//alert(self.o.sidebarAdd)
$(self.o.sidebarAdd).appendTo('.mapplic-list-container');
}
// if ($('.mapplic-contact').length) {
// $('.mapplic-contact').appendTo('.mapplic-list-container');
// }
}
this.addCategories = function(categories) {
var list = this.list;
$.each(categories, function(index, category) {
var item = $('<li></li>').addClass('mapplic-list-category').addClass(category.id);
var ol = $('<ol></ol>').css('border-color', category.color).appendTo(item);
if (category.show == 'false') ol.hide();
var link = $('<a></a>').attr('href', '#').attr('title', category.title).css('background-color', category.color).text(category.title).click(function(e) {
ol.slideToggle(200);
return false;
}).prependTo(item);
if (category.icon) $('<img>').attr('src', category.icon).addClass('mapplic-list-thumbnail').prependTo(link);
$('<span></span>').text('0').addClass('mapplic-list-count').prependTo(link);
list.append(item);
});
}
this.addLocation = function(data) {
var item = $('<li></li>').addClass('mapplic-list-location').addClass('mapplic-list-shown');
var link = $('<a></a>').attr('href', '#' + data.id).appendTo(item);
if (data.thumbnail) $('<img>').attr('src', data.thumbnail).addClass('mapplic-list-thumbnail').appendTo(link);
$('<h4></h4>').text(data.title).appendTo(link)
$('<span></span>').html(data.about).appendTo(link);
var category = $('.mapplic-list-category.' + data.category);
if (category.length) $('ol', category).append(item);
else this.list.append(item);
// Count
$('.mapplic-list-count', category).text($('.mapplic-list-shown', category).length);
}
this.search = function(keyword) {
if (keyword) self.clear.fadeIn(100);
else self.clear.fadeOut(100);
$('.mapplic-list li', self.el).each(function() {
if ($(this).text().search(new RegExp(keyword, "i")) < 0) {
$(this).removeClass('mapplic-list-shown');
$(this).slideUp(200);
} else {
$(this).addClass('mapplic-list-shown');
$(this).show();
}
});
$('.mapplic-list > li', self.el).each(function() {
var count = $('.mapplic-list-shown', this).length;
$('.mapplic-list-count', this).text(count);
});
// Show not-found text
if ($('.mapplic-list > li.mapplic-list-shown').length > 0) this.notfound.fadeOut(200);
else this.notfound.fadeIn(200);
}
}
// Developer tools
function DevTools() {
this.el = null;
this.init = function() {
this.el = $('<div></div>').addClass('mapplic-coordinates').appendTo(self.container);
this.el.append('x: ');
$('<code></code>').addClass('mapplic-coordinates-x').appendTo(this.el);
this.el.append(' y: ');
$('<code></code>').addClass('mapplic-coordinates-y').appendTo(this.el);
$('.mapplic-layer', self.map).on('mousemove', function(e) {
var x = (e.pageX - self.map.offset().left) / self.map.width(),
y = (e.pageY - self.map.offset().top) / self.map.height();
$('.mapplic-coordinates-x').text(parseFloat(x).toFixed(4));
$('.mapplic-coordinates-y').text(parseFloat(y).toFixed(4));
});
}
}
// Clear Button
function ClearButton() {
this.el = null;
this.init = function() {
this.el = $('<a></a>').attr('href', '#').addClass('mapplic-clear-button').click(function(e) {
e.preventDefault();
self.deeplinking.clear();
self.tooltip.hide();
zoomTo(0.5, 0.5, 1);
}).appendTo(self.container);
}
}
// Full Screen
function FullScreen() {
this.el = null;
this.init = function() {
var s = this;
this.element = self.el[0];
$('<a></a>').attr('href', '#').attr('href', '#').addClass('mapplic-fullscreen-button').click(function(e) {
e.preventDefault();
if (s.isFull()) s.exitFull();
else s.goFull();
}).appendTo(self.container);
}
this.goFull = function() {
if (this.element.requestFullscreen) this.element.requestFullscreen();
else if(this.element.mozRequestFullScreen) this.element.mozRequestFullScreen();
else if(this.element.webkitRequestFullscreen) this.element.webkitRequestFullscreen();
else if(this.element.msRequestFullscreen) this.element.msRequestFullscreen();
}
this.exitFull = function() {
if (document.exitFullscreen) document.exitFullscreen();
else if(document.mozCancelFullScreen) document.mozCancelFullScreen();
else if(document.webkitExitFullscreen) document.webkitExitFullscreen();
}
this.isFull = function() {
if (window.innerHeight == screen.height) {
return true;
} else {
return false;
}
}
}
// Functions
var processData = function(data) {
self.data = data;
var nrlevels = 0;
var shownLevel;
self.container = $('<div></div>').addClass('mapplic-container').appendTo(self.el);
self.map = $('<div></div>').addClass('mapplic-map').appendTo(self.container);
self.levelselect = $('<select></select>').addClass('mapplic-levels-select');
if (!self.o.sidebar) self.container.css('width', '100%');
self.contentWidth = data.mapwidth;
self.contentHeight = data.mapheight;
self.hw_ratio = data.mapheight / data.mapwidth;
if (data.mapheight / self.container.height() > data.mapwidth / self.container.width()) {
self.min_width = self.container.width();
self.min_height = self.container.width() * self.hw_ratio;
}
else {
self.min_height = self.container.height();
self.min_width = self.container.height() / self.hw_ratio;
}
self.map.css({
'width': data.mapwidth,
'height': data.mapheight
});
// Create minimap
if (self.o.minimap) {
self.minimap = new Minimap();
self.minimap.init();
}
// Create sidebar
if (self.o.sidebar) {
self.sidebar = new Sidebar();
self.sidebar.init();
self.sidebar.addCategories(data.categories);
}
// Iterate through levels
if (data.levels) {
$.each(data.levels, function(index, value) {
var source = value.map;
var extension = source.substr((source.lastIndexOf('.') + 1)).toLowerCase();
// Create new map layer
var layer = $('<div></div>').addClass('mapplic-layer').addClass(value.id).hide().appendTo(self.map);
switch (extension) {
// Image formats
case 'jpg': case 'jpeg': case 'png': case 'gif':
$('<img>').attr('src', source).addClass('mapplic-map-image').appendTo(layer);
break;
// Vector format
case 'svg':
$('<div></div>').addClass('mapplic-map-image').load(source).appendTo(layer);
break;
// Other
default:
alert('File type ' + extension + ' is not supported!');
}
// Create new minimap layer
if (self.minimap) self.minimap.addLayer(value);
// Build layer control
self.levelselect.prepend($('<option></option>').attr('value', value.id).text(value.title));
if (!shownLevel || value.show) {
shownLevel = value.id;
}
/* Iterate through locations */
$.each(value.locations, function(index, value) {
var top = value.y * 100;
var left = value.x * 100;
if (value.pin != 'hidden') {
if (self.o.locations) {
var target = '#' + value.id;
if (value.action == 'redirect') target = value.link;
var pin = $('<a></a>').attr('href', target).addClass('mapplic-pin').css({'top': top + '%', 'left': left + '%'}).appendTo(layer);
pin.attr('data-location', value.id);
pin.addClass(value.pin);
}
}
if (self.sidebar) self.sidebar.addLocation(value);
});
nrlevels++;
});
}
// Pin animation
if (self.o.animate) {
$('.mapplic-pin').css('opacity', '0');
window.setTimeout(animateNext, 200);
}
function animateNext() {
var select = $('.mapplic-pin:not(.mapplic-animate):visible');
//console.log('enter');
if (select.length > 0) {
select.first().addClass('mapplic-animate');
window.setTimeout(animateNext, 200);
}
else {
$('.mapplic-animate').removeClass('mapplic-animate');
$('.mapplic-pin').css('opacity', '1');
}
}
// COMPONENTS
// Hover Tooltip
if (self.o.hovertip) self.hovertip = new HoverTooltip().init();
// Tooltip
self.tooltip = new Tooltip();
self.tooltip.init();
// Developer tools
if (self.o.developer) self.devtools = new DevTools().init();
// Clear button
if (self.o.clearbutton) self.clearbutton = new ClearButton().init();
// Fullscreen
if (self.o.fullscreen) self.fullscreen = new FullScreen().init();
// Levels
if (nrlevels > 1) {
self.levels = $('<div></div>').addClass('mapplic-levels');
var up = $('<a href="#"></a>').addClass('mapplic-levels-up').appendTo(self.levels);
self.levelselect.appendTo(self.levels);
var down = $('<a href="#"></a>').addClass('mapplic-levels-down').appendTo(self.levels);
self.container.append(self.levels);
self.levelselect.change(function() {
var value = $(this).val();
level(value);
});
up.click(function(e) {
e.preventDefault();
if (!$(this).hasClass('disabled')) level('+');
});
down.click(function(e) {
e.preventDefault();
if (!$(this).hasClass('disabled')) level('-');
});
}
level(shownLevel);
// Browser resize
$(window).resize(function() {
var wr = self.container.width() / self.contentWidth,
hr = self.container.height() / self.contentHeight;
if (wr > hr) self.fitscale = wr;
else self.fitscale = hr;
self.scale = normalizeScale(self.scale);
self.x = normalizeX(self.x);
self.y = normalizeY(self.y);
moveTo(self.x, self.y, self.scale, 100);
}).resize();
// Deeplinking
if (self.o.deeplinking) {
self.deeplinking = new Deeplinking();
self.deeplinking.init();
}
}
var addControls = function() {
var map = self.map,
mapbody = $('.mapplic-map-image', self.map);
document.ondragstart = function() { return false; } // IE drag fix
// Drag & drop
mapbody.on('mousedown', function(event) {
map.stop();
map.data('mouseX', event.pageX);
map.data('mouseY', event.pageY);
map.data('lastX', self.x);
map.data('lastY', self.y);
map.addClass('mapplic-dragging');
self.map.on('mousemove', function(event) {
var x = event.pageX - map.data('mouseX') + self.x;
y = event.pageY - map.data('mouseY') + self.y;
x = normalizeX(x);
y = normalizeY(y);
moveTo(x, y);
map.data('lastX', x);
map.data('lastY', y);
});
$(document).on('mouseup', function(event) {
self.x = map.data('lastX');
self.y = map.data('lastY');
self.map.off('mousemove');
$(document).off('mouseup');
map.removeClass('mapplic-dragging');
});
});
// Double click
$(document).on('dblclick', '.mapplic-map-image', function(event) {
var mapPos = self.map.offset();
var x = (event.pageX - mapPos.left) / self.map.width();
var y = (event.pageY - mapPos.top) / self.map.height();
var z = self.map.width() / self.min_width * 2;
zoomTo(x, y, z, 600);
});
// Mousewheel
$('.mapplic-layer', this.el).bind('mousewheel DOMMouseScroll', function(event, delta) {
event.preventDefault();
var scale = self.scale;
self.scale = normalizeScale(scale + scale * delta/5);
self.x = normalizeX(self.x - (event.pageX - self.container.offset().left - self.x) * (self.scale/scale - 1));
self.y = normalizeY(self.y - (event.pageY - self.container.offset().top - self.y) * (self.scale/scale - 1));
moveTo(self.x, self.y, self.scale, 100);
});
// Touch support
if (!('ontouchstart' in window || 'onmsgesturechange' in window)) return true;
mapbody.on('touchstart', function(e) {
var orig = e.originalEvent,
pos = map.position();
map.data('touchY', orig.changedTouches[0].pageY - pos.top);
map.data('touchX', orig.changedTouches[0].pageX - pos.left);
mapbody.on('touchmove', function(e) {
e.preventDefault();
var orig = e.originalEvent;
var touches = orig.touches.length;
if (touches == 1) {
self.x = normalizeX(orig.changedTouches[0].pageX - map.data('touchX'));
self.y = normalizeY(orig.changedTouches[0].pageY - map.data('touchY'));
moveTo(self.x, self.y, self.scale, 100);
}
else {
mapbody.off('touchmove');
}
});
mapbody.on('touchend', function(e) {
mapbody.off('touchmove touchend');
});
});
// Pinch zoom
var mapPinch = Hammer(self.map[0], {
transform_always_block: true,
drag_block_horizontal: true,
drag_block_vertical: true
});
var scale=1, last_scale;
mapPinch.on('touch transform', function(ev) {
switch(ev.type) {
case 'touch':
last_scale = scale;
break;
case 'transform':
var center = ev.gesture.center;
scale = Math.max(1, Math.min(last_scale * ev.gesture.scale, 10));
var oldscale = self.scale;
self.scale = normalizeScale(scale * self.fitscale);
self.x = normalizeX(self.x - (center.pageX - self.container.offset().left - self.x) * (self.scale/oldscale - 1));
self.y = normalizeY(self.y - (center.pageY - self.container.offset().top - self.y) * (self.scale/oldscale - 1));
moveTo(self.x, self.y, self.scale, 200);
break;
}
});
}
var level = function(target) {
switch (target) {
case '+':
target = $('option:selected', self.levelselect).removeAttr('selected').prev().prop('selected', 'selected').val();
break;
case '-':
target = $('option:selected', self.levelselect).removeAttr('selected').next().prop('selected', 'selected').val();
break;
default:
$('option[value="' + target + '"]', self.levelselect).prop('selected', 'selected');
}
var layer = $('.mapplic-layer.' + target, self.map);
// Target layer is active
if (layer.is(':visible')) return;
// Hide Tooltip
self.tooltip.hide();
// Show target layer
$('.mapplic-layer:visible', self.map).hide();
layer.show();
// Show target minimap layer
if (self.minimap) self.minimap.show(target);
// Update control
var index = self.levelselect.get(0).selectedIndex,
up = $('.mapplic-levels-up', self.levels),
down = $('.mapplic-levels-down', self.levels);
up.removeClass('disabled');
down.removeClass('disabled');
if (index == 0) {
up.addClass('disabled');
}
else if (index == self.levelselect.get(0).length - 1) {
down.addClass('disabled');
}
}
var getLocationData = function(id) {
var data = null;
$.each(self.data.levels, function(index, layer) {
$.each(layer.locations, function(index, value) {
if (value.id == id) {
data = value;
}
});
});
return data;
}
var showLocation = function(id, duration) {
$.each(self.data.levels, function(index, layer) {
$.each(layer.locations, function(index, value) {
if (value.id == id) {
var zoom = typeof value.zoom !== 'undefined' ? value.zoom : 4,
drop = self.tooltip.drop / self.contentHeight / zoom;
level(layer.id);
zoomTo(value.x, parseFloat(value.y) - drop, zoom, duration, 'easeInOutCubic');
}
});
});
};
var normalizeX = function(x) {
var minX = self.container.width() - self.contentWidth * self.scale;
if (x > 0) x = 0;
else if (x < minX) x = minX;
return x;
}
var normalizeY = function(y) {
var minY = self.container.height() - self.contentHeight * self.scale;
if (y >= 0) y = 0;
else if (y < minY) y = minY;
return y;
}
var normalizeScale = function(scale) {
if (scale < self.fitscale) scale = self.fitscale;
else if (scale > self.o.maxscale) scale = self.o.maxscale;
return scale;
}
var zoomTo = function(x, y, s, duration, easing) {
duration = typeof duration !== 'undefined' ? duration : 400;
self.scale = normalizeScale(self.fitscale * s);
var scale = self.contentWidth * self.scale;
self.x = normalizeX(self.container.width() * 0.5 - self.scale * self.contentWidth * x);
self.y = normalizeY(self.container.height() * 0.5 - self.scale * self.contentHeight * y);
moveTo(self.x, self.y, self.scale, duration, easing);
}
var moveTo = function(x, y, scale, d, easing) {
if (scale !== undefined) {
self.map.stop().animate({
'left': x,
'top': y,
'width': self.contentWidth * scale,
'height': self.contentHeight * scale
}, d, easing);
}
else {
self.map.css({
'left': x,
'top': y
});
}
if (self.minimap) self.minimap.update(x, y);
}
};
// Create a jQuery plugin
$.fn.mapplic = function(params) {
var len = this.length;
return this.each(function(index) {
var me = $(this),
key = 'mapplic' + (len > 1 ? '-' + ++index : ''),
instance = (new Mapplic).init(me, params);
me.data(key, instance).data('key', key);
});
};
})(jQuery);