All language subtitles for 014 Including a Map with Mapbox - Part 2_Downloadly.ir_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,780 --> 00:00:04,163 Let's now continue building our map integration. 2 00:00:05,720 --> 00:00:08,637 And so let's now actually head over to Mapbox. 3 00:00:11,036 --> 00:00:15,090 And so, I'm using Mapbox instead of Google Maps now 4 00:00:15,090 --> 00:00:16,710 and that's because some time ago, 5 00:00:16,710 --> 00:00:19,260 Google Maps started to actually require 6 00:00:19,260 --> 00:00:21,300 a credit card from you in order 7 00:00:21,300 --> 00:00:23,220 to be able to use Google Maps. 8 00:00:23,220 --> 00:00:26,640 And I don't think that's a good idea for a course like this 9 00:00:26,640 --> 00:00:29,160 and, actually, I also really like Mapbox, 10 00:00:29,160 --> 00:00:33,723 and so, I think it's perfect for us to use in this course. 11 00:00:35,500 --> 00:00:37,720 They also have excellent documentation 12 00:00:37,720 --> 00:00:40,130 that we're gonna try out in a second here. 13 00:00:40,130 --> 00:00:43,330 But for now, let's start and create a new account. 14 00:00:43,330 --> 00:00:45,623 So just hit here on start building. 15 00:00:48,208 --> 00:00:51,960 And then, of course, create your free account. 16 00:00:51,960 --> 00:00:54,370 I already have one and so, just pause the video 17 00:00:54,370 --> 00:00:58,200 at this point in order to create that account. 18 00:00:58,200 --> 00:01:00,210 And after creating your account, you should 19 00:01:00,210 --> 00:01:02,960 land on a page that looks something like this. 20 00:01:02,960 --> 00:01:05,009 Now by the time you are watching this video, 21 00:01:05,009 --> 00:01:06,820 this page here might, of course, 22 00:01:06,820 --> 00:01:09,430 have changed, and probably it has, 23 00:01:09,430 --> 00:01:11,020 but what we need to do now is to 24 00:01:11,020 --> 00:01:13,900 find a link which says something like this, 25 00:01:13,900 --> 00:01:17,281 so install the maps software development kit, 26 00:01:17,281 --> 00:01:21,850 so this here, or also integrate Mapbox, 27 00:01:21,850 --> 00:01:24,455 which should be pretty much the same. 28 00:01:24,455 --> 00:01:29,025 So I'll click here on install the maps for JavaScript. 29 00:01:29,025 --> 00:01:30,720 And what we're gonna do here 30 00:01:30,720 --> 00:01:33,100 is to use the Mapbox CDN 31 00:01:33,100 --> 00:01:35,050 so the content delivery network 32 00:01:35,050 --> 00:01:36,500 and for now at least 33 00:01:36,500 --> 00:01:38,503 not the NPM module bundler. 34 00:01:40,230 --> 00:01:43,500 So the first step, as it says here, 35 00:01:43,500 --> 00:01:47,941 is to include these files here and to the had HTML file. 36 00:01:47,941 --> 00:01:51,121 And so that's where we now need that 37 00:01:51,121 --> 00:01:54,663 extend head technique that we had before. 38 00:01:56,970 --> 00:01:58,860 And so that's where we now actually need 39 00:01:58,860 --> 00:02:01,293 that extending the head technique. 40 00:02:02,443 --> 00:02:04,060 Here in the tour, 41 00:02:04,060 --> 00:02:07,690 remember how we moved this out of the head, actually. 42 00:02:07,690 --> 00:02:10,550 But now we still need some stuff that we 43 00:02:10,550 --> 00:02:12,940 need to append to the head. 44 00:02:12,940 --> 00:02:16,533 And so that's this script, and this style sheet as well. 45 00:02:17,570 --> 00:02:19,833 Let's quickly translate this here to pug. 46 00:02:26,250 --> 00:02:28,533 And the link as well, 47 00:02:31,470 --> 00:02:33,300 and that's actually it. 48 00:02:33,300 --> 00:02:34,663 Let's get rid of this part, 49 00:02:35,930 --> 00:02:39,370 and let's go back to the next step here. 50 00:02:39,370 --> 00:02:43,720 Next up, we need to copy this JavaScript code here, 51 00:02:43,720 --> 00:02:45,885 into our file. 52 00:02:45,885 --> 00:02:48,050 And to our script, of course. 53 00:02:48,050 --> 00:02:51,140 So right here into mapbox.js. 54 00:02:51,140 --> 00:02:53,860 Now you will probably not have this access token 55 00:02:53,860 --> 00:02:55,360 at this point, 56 00:02:55,360 --> 00:02:58,180 and so it either required you to already do it, 57 00:02:58,180 --> 00:03:01,343 or otherwise I will show you how to do it in a second. 58 00:03:02,586 --> 00:03:05,230 Let's just indent this part here. 59 00:03:05,230 --> 00:03:09,510 With this, we're actually already good to go. 60 00:03:09,510 --> 00:03:11,640 This should in fact already create a map 61 00:03:11,640 --> 00:03:14,090 and display it on our page. 62 00:03:14,090 --> 00:03:17,760 That's because the container here is set to map. 63 00:03:17,760 --> 00:03:20,260 And what that means is that it will put the map 64 00:03:20,260 --> 00:03:23,270 on an element with the ID of map. 65 00:03:23,270 --> 00:03:26,410 That's why here, in our tour, we have 66 00:03:27,280 --> 00:03:29,010 this element here, 67 00:03:29,010 --> 00:03:30,003 oh, where is that? 68 00:03:31,100 --> 00:03:34,760 So right here, we have an element with ID map. 69 00:03:34,760 --> 00:03:37,730 The reason for that is that here in Mapbox, 70 00:03:37,730 --> 00:03:39,390 we actually need an element with 71 00:03:39,390 --> 00:03:41,940 an ID that we can then specify here. 72 00:03:41,940 --> 00:03:43,920 And the default is map, 73 00:03:43,920 --> 00:03:46,750 and so that's how I called it in html. 74 00:03:46,750 --> 00:03:48,900 Then we also have this default style here, 75 00:03:48,900 --> 00:03:50,700 that we're gonna change in a second. 76 00:03:52,070 --> 00:03:54,393 For now, let's go back to our instructions here, 77 00:03:56,530 --> 00:03:59,720 and so it says that we're done here. 78 00:03:59,720 --> 00:04:02,707 But now let's actually go back to our account 79 00:04:02,707 --> 00:04:06,185 and create that token that we need 80 00:04:06,185 --> 00:04:09,650 in order to be able to actually access Mapbox. 81 00:04:09,650 --> 00:04:11,460 Please don't just copy my token, 82 00:04:11,460 --> 00:04:13,990 that's not going to work well for you. 83 00:04:13,990 --> 00:04:16,269 But instead, create your own. 84 00:04:16,269 --> 00:04:19,363 You can just create a new name for it. 85 00:04:21,760 --> 00:04:23,713 Let's just call it something like this. 86 00:04:26,010 --> 00:04:28,200 And then create token here. 87 00:04:28,200 --> 00:04:29,550 Then you put your password, 88 00:04:32,040 --> 00:04:35,640 and so, you can then use that token. 89 00:04:35,640 --> 00:04:38,150 So, again, I'm not sure if it already created 90 00:04:38,150 --> 00:04:40,860 this token for you, or if you really needed 91 00:04:40,860 --> 00:04:42,360 to create a new one. 92 00:04:42,360 --> 00:04:46,500 Anyway, it's also nice to have one token for each project, 93 00:04:46,500 --> 00:04:47,820 so that you can then restrict 94 00:04:47,820 --> 00:04:50,668 that token to only that project. 95 00:04:50,668 --> 00:04:54,160 I created my account here a long time ago, 96 00:04:54,160 --> 00:04:57,530 and so I'm not really sure, again, how that worked, 97 00:04:57,530 --> 00:05:01,073 but anyway, having that token you should now be good to go. 98 00:05:03,730 --> 00:05:07,883 In fact, this should now already display our default map. 99 00:05:09,250 --> 00:05:13,990 So let's reload, and indeed, this is our default map. 100 00:05:13,990 --> 00:05:15,960 It doesn't look really nice, 101 00:05:15,960 --> 00:05:17,313 well we can zoom in, 102 00:05:19,390 --> 00:05:21,620 but really, the style isn't all that nice, 103 00:05:21,620 --> 00:05:24,110 and doesn't really match our website, 104 00:05:24,110 --> 00:05:25,090 and of course, 105 00:05:25,090 --> 00:05:27,198 we also do not have our locations 106 00:05:27,198 --> 00:05:29,627 anywhere plotted to the map. 107 00:05:29,627 --> 00:05:33,700 And so let's now take care of all of that. 108 00:05:33,700 --> 00:05:35,914 Let's go back to Mapbox, 109 00:05:35,914 --> 00:05:38,783 and now we go into our design studio. 110 00:05:40,280 --> 00:05:42,900 Let's just click here on "start designing a map," 111 00:05:42,900 --> 00:05:44,720 or again, if your website looks a 112 00:05:44,720 --> 00:05:46,200 bit different at this point, 113 00:05:46,200 --> 00:05:49,313 then just search for the design studio. 114 00:05:50,680 --> 00:05:53,093 Maybe it shows up somewhere here. 115 00:05:56,220 --> 00:05:57,433 So let's try that. 116 00:06:01,560 --> 00:06:04,330 Here, we can really do all kinds of stuff 117 00:06:04,330 --> 00:06:07,010 regarding designing a map. 118 00:06:07,010 --> 00:06:10,340 Actually, this is not really what I expected, 119 00:06:10,340 --> 00:06:13,670 because it's a bit too complex to change 120 00:06:13,670 --> 00:06:15,090 all of this stuff here, 121 00:06:15,090 --> 00:06:18,670 but there are some default styles, 122 00:06:18,670 --> 00:06:20,670 ah yeah, this is what I was looking for. 123 00:06:21,520 --> 00:06:23,640 Let's create new style here, 124 00:06:23,640 --> 00:06:27,790 and then from there we can kind of choose a default. 125 00:06:27,790 --> 00:06:30,483 And really what I want is this light style. 126 00:06:31,400 --> 00:06:34,560 So create, and actually I'm very happy with 127 00:06:34,560 --> 00:06:37,330 the way it looks out of the box. 128 00:06:37,330 --> 00:06:39,972 Now, for some reason I don't see anything here, 129 00:06:39,972 --> 00:06:43,937 okay, that's because it was zoomed into the sea. 130 00:06:43,937 --> 00:06:48,937 But anyway, let's now zoom in somewhere here, 131 00:06:50,570 --> 00:06:53,830 and I think it looks pretty nice already, 132 00:06:53,830 --> 00:06:57,407 and so let's just add a name to it here, 133 00:06:57,407 --> 00:06:58,550 and so I'm calling it 134 00:07:00,790 --> 00:07:04,968 Natour's Video Recording 135 00:07:04,968 --> 00:07:08,430 because I already have a Natour's style, 136 00:07:08,430 --> 00:07:11,724 but you of course can call it anything you want. 137 00:07:11,724 --> 00:07:16,340 Let's confirm the name here, go back, 138 00:07:16,340 --> 00:07:19,230 and then we here on share and use. 139 00:07:19,230 --> 00:07:23,393 And what we want is not share, but instead use. 140 00:07:23,393 --> 00:07:28,393 Somewhere down here, we should see our style URL, 141 00:07:28,640 --> 00:07:30,960 and so, yeah, that's the one. 142 00:07:30,960 --> 00:07:34,877 So it has to be a URL basically starting with Mapbox. 143 00:07:37,480 --> 00:07:40,630 Let's just copy it, go back, 144 00:07:40,630 --> 00:07:43,640 and then replace the style that we have here as a default, 145 00:07:43,640 --> 00:07:45,363 with the one that we just created. 146 00:07:47,699 --> 00:07:49,363 Give it a save, 147 00:07:50,750 --> 00:07:51,630 and 148 00:07:54,060 --> 00:07:56,650 yeah, that looks much better. 149 00:07:56,650 --> 00:07:59,650 And it is exactly the style that we just created. 150 00:07:59,650 --> 00:08:02,473 So we can now zoom in, zoom out, 151 00:08:02,473 --> 00:08:04,830 or actually the other way around, 152 00:08:04,830 --> 00:08:07,433 we can pan the map to wherever we want, 153 00:08:08,964 --> 00:08:13,136 and we can also define a ton of properties, 154 00:08:13,136 --> 00:08:15,123 of options to this map. 155 00:08:15,960 --> 00:08:17,810 Right now, whenever we load the map, 156 00:08:17,810 --> 00:08:19,230 it always looks the same, 157 00:08:19,230 --> 00:08:21,510 always centered here in Boston. 158 00:08:21,510 --> 00:08:24,230 But we can change that by specifying 159 00:08:25,720 --> 00:08:26,803 the center here. 160 00:08:28,600 --> 00:08:31,580 And so we need to pass in an array of two coordinates. 161 00:08:31,580 --> 00:08:34,610 Let's actually get the one from LA 162 00:08:34,610 --> 00:08:37,472 that we used before in Postman, 163 00:08:42,356 --> 00:08:43,188 So exactly this, 164 00:08:48,210 --> 00:08:51,870 but, actually, Mapbox is exactly like MongoDB, 165 00:08:51,870 --> 00:08:55,200 in aspect to first requiring a longitude, 166 00:08:55,200 --> 00:08:56,603 and then the latitude. 167 00:08:58,270 --> 00:09:00,020 We need to switch them here around. 168 00:09:02,925 --> 00:09:05,363 And let's take a look at what we get. 169 00:09:07,330 --> 00:09:10,083 And, well, that doesn't really take us anywhere. 170 00:09:12,330 --> 00:09:15,953 Let's also specify a zoom level here. 171 00:09:17,310 --> 00:09:18,400 Let's say four. 172 00:09:18,400 --> 00:09:19,843 Maybe that fixes it. 173 00:09:26,030 --> 00:09:29,153 And actually, that was this illusion. 174 00:09:30,221 --> 00:09:33,150 So there are different zoom levels. 175 00:09:33,150 --> 00:09:35,820 For example we can try out one here as well, 176 00:09:35,820 --> 00:09:38,760 and that should be then way more zoomed in, 177 00:09:38,760 --> 00:09:41,460 or maybe zoomed out, I'm not really sure. 178 00:09:41,460 --> 00:09:45,040 Ah, okay, so that really zooms it out all the way. 179 00:09:45,040 --> 00:09:46,943 So let's say 10 here for example, 180 00:09:49,180 --> 00:09:51,430 and as you see I really like to play around 181 00:09:51,430 --> 00:09:53,320 with this kind of stuff, 182 00:09:53,320 --> 00:09:57,360 and yeah, at 10 it's now really zoomed close. 183 00:09:57,360 --> 00:10:00,913 We can also say that we want it to not be interactive, 184 00:10:02,130 --> 00:10:04,400 and so that's very simple. 185 00:10:04,400 --> 00:10:07,683 Let's set interactive to false. 186 00:10:08,610 --> 00:10:10,610 And then basically your map is going 187 00:10:10,610 --> 00:10:13,823 to look like a simple image on your website. 188 00:10:15,960 --> 00:10:18,570 So as you see, I cannot scroll anything here, 189 00:10:18,570 --> 00:10:20,650 and I can also not pan it. 190 00:10:20,650 --> 00:10:22,955 So there's nothing I can do now. 191 00:10:22,955 --> 00:10:25,940 And these are actually just a couple of options 192 00:10:25,940 --> 00:10:26,803 that we can set. 193 00:10:29,010 --> 00:10:32,090 Let's actually go back here to Mapbox, 194 00:10:32,090 --> 00:10:36,093 and to the documentation and Mapbox JavaScript. 195 00:10:39,160 --> 00:10:42,020 Here you get all the documentation for really 196 00:10:42,020 --> 00:10:46,300 everything you can do with the JavaScript version of Mapbox. 197 00:10:46,300 --> 00:10:48,790 What I just wanted to show you is that the stuff that 198 00:10:48,790 --> 00:10:51,240 I just showed you is actually here. 199 00:10:51,240 --> 00:10:53,550 So we have the container that we specified, 200 00:10:53,550 --> 00:10:55,023 we have the style, 201 00:10:55,990 --> 00:10:57,970 and we have really a bunch of stuff. 202 00:10:57,970 --> 00:10:59,720 So interactive, 203 00:10:59,720 --> 00:11:02,750 and if you want you can of course play around 204 00:11:02,750 --> 00:11:03,873 with all of these. 205 00:11:05,192 --> 00:11:08,120 I just wanted to show you that this is how you 206 00:11:08,120 --> 00:11:11,400 can learn some more stuff about Mapbox. 207 00:11:11,400 --> 00:11:14,496 Now, we actually don't want any of this. 208 00:11:14,496 --> 00:11:17,800 Because we don't want to center the map anywhere, 209 00:11:17,800 --> 00:11:20,490 but instead we want it to automatically figure out 210 00:11:20,490 --> 00:11:24,551 the position of the map based on our tour location points. 211 00:11:24,551 --> 00:11:26,739 What we're gonna do now is basically put 212 00:11:26,739 --> 00:11:30,410 all the locations for a certain tour on the map, 213 00:11:30,410 --> 00:11:32,660 and then allow the map to basically figure out 214 00:11:32,660 --> 00:11:36,180 automatically which portion of the map it should display 215 00:11:36,180 --> 00:11:39,280 in order to fit all of these points correctly. 216 00:11:39,280 --> 00:11:41,540 The first thing that we need to do is to 217 00:11:41,540 --> 00:11:43,713 create a bound variable. 218 00:11:47,060 --> 00:11:52,060 Bounds equal a new Mapbox GL.latitutde longitude bounds. 219 00:12:00,360 --> 00:12:03,320 And we get access to this Mapbox object 220 00:12:03,320 --> 00:12:05,520 because we included the Mapbox library 221 00:12:05,520 --> 00:12:06,983 at the beginning of our page. 222 00:12:09,210 --> 00:12:10,113 Right here, 223 00:12:11,270 --> 00:12:12,883 including this script here, 224 00:12:14,050 --> 00:12:15,760 so this Mapbox library, 225 00:12:15,760 --> 00:12:18,760 this is what exposes the Mapbox GL object, 226 00:12:18,760 --> 00:12:21,193 which we can then use throughout our site. 227 00:12:24,180 --> 00:12:26,870 This bounds object here is basically the area 228 00:12:26,870 --> 00:12:29,589 that will be displayed on the map. 229 00:12:29,589 --> 00:12:32,860 We will now extend that with all the locations 230 00:12:32,860 --> 00:12:35,043 that are in our locations array. 231 00:12:35,043 --> 00:12:37,597 And this will make a bit more sense once we 232 00:12:37,597 --> 00:12:39,333 actually start using that. 233 00:12:41,490 --> 00:12:44,050 Let's now loop through all our locations 234 00:12:44,050 --> 00:12:46,203 and add a marker for each of them. 235 00:12:48,150 --> 00:12:49,750 For each, 236 00:12:49,750 --> 00:12:52,313 and let's see lock for locations, 237 00:12:54,840 --> 00:12:58,150 and so here we want to add a marker. 238 00:12:58,150 --> 00:13:00,160 And for that, we actually need to create 239 00:13:00,160 --> 00:13:02,053 a new html element, 240 00:13:04,228 --> 00:13:07,900 in this regard, it really is a little bit low level, 241 00:13:07,900 --> 00:13:09,780 but I find that actually really nice, 242 00:13:09,780 --> 00:13:12,230 because, like this, we have a lot of control 243 00:13:12,230 --> 00:13:15,110 over what's actually happening in our map. 244 00:13:15,110 --> 00:13:17,070 And what I'm showing you here is actually just 245 00:13:17,070 --> 00:13:19,366 a tiny fraction of all the great stuff 246 00:13:19,366 --> 00:13:22,083 that you can do with Mapbox. 247 00:13:23,525 --> 00:13:26,593 This here is just a standard JavaScript, 248 00:13:26,593 --> 00:13:28,928 and so we can use create element 249 00:13:28,928 --> 00:13:31,490 in order to create elements. 250 00:13:31,490 --> 00:13:33,040 Just as the name says, 251 00:13:33,040 --> 00:13:35,490 and here we want to create a new diff. 252 00:13:35,490 --> 00:13:38,653 And we also want to give is a class name, 253 00:13:44,700 --> 00:13:46,193 and set that to marker. 254 00:13:47,945 --> 00:13:50,170 And here it is, it's a semicolon. 255 00:13:50,170 --> 00:13:52,500 And so in the CSS we then actually 256 00:13:52,500 --> 00:13:54,313 have a class for this marker. 257 00:13:57,140 --> 00:14:00,870 Marker, here you see the background image that is specified, 258 00:14:00,870 --> 00:14:03,459 which is this green pin here. 259 00:14:03,459 --> 00:14:07,210 That pin that you're gonna see in a second on the map, 260 00:14:07,210 --> 00:14:10,110 is actually a custom image that I designed. 261 00:14:10,110 --> 00:14:13,070 It's not coming directly from Mapbox. 262 00:14:13,070 --> 00:14:16,500 Like this, you can really adjust it to your own style 263 00:14:16,500 --> 00:14:17,333 and your own brand. 264 00:14:17,333 --> 00:14:21,733 I also defined the size of the marker here, 265 00:14:23,500 --> 00:14:25,363 yeah, it's really customizable. 266 00:14:27,362 --> 00:14:32,335 Now we actually create a new marker inside of Mapbox 267 00:14:32,335 --> 00:14:37,257 by saying new Mapbox GL.marker. 268 00:14:40,230 --> 00:14:45,230 And then in there, we pass the element that we just created, 269 00:14:45,400 --> 00:14:49,503 so L, and then we also specify an anchor property. 270 00:14:51,100 --> 00:14:52,090 Which I set 271 00:14:53,440 --> 00:14:54,910 to bottom here. 272 00:14:54,910 --> 00:14:58,610 And what that means is that it's the bottom of the element, 273 00:14:58,610 --> 00:15:01,230 and so in this case the bottom of that pin, 274 00:15:01,230 --> 00:15:04,683 which is going to be located at the exact GPS location. 275 00:15:05,790 --> 00:15:07,710 We could also put it in the center, 276 00:15:07,710 --> 00:15:10,113 but I think it makes more sense that, 277 00:15:11,260 --> 00:15:13,690 let's open that image up again, 278 00:15:13,690 --> 00:15:16,520 I think it makes more sense that this end here 279 00:15:16,520 --> 00:15:19,110 of the image is the one that really points to the 280 00:15:19,110 --> 00:15:20,663 exact GPS location. 281 00:15:22,512 --> 00:15:26,040 That's what we do with this anchor property. 282 00:15:26,040 --> 00:15:27,680 So that is the marker, 283 00:15:27,680 --> 00:15:31,896 and now, on that, we can call a couple of methods. 284 00:15:31,896 --> 00:15:35,600 Right now, Mapbox knows nothing about the GPS coordinates 285 00:15:35,600 --> 00:15:36,635 of this marker. 286 00:15:36,635 --> 00:15:39,250 We didn't set that anywhere. 287 00:15:39,250 --> 00:15:40,580 Let's do that now, 288 00:15:40,580 --> 00:15:44,960 so set longitude, latitude, and equal to 289 00:15:44,960 --> 00:15:47,423 location.coordinates. 290 00:15:49,364 --> 00:15:54,301 Remember that this here is an array of longitude 291 00:15:54,301 --> 00:15:55,990 and latitude forced. 292 00:15:55,990 --> 00:15:59,471 That's exactly what Mapbox expects. 293 00:15:59,471 --> 00:16:02,540 Just to make sure you really understand, 294 00:16:02,540 --> 00:16:04,633 let's take a look at the tours. 295 00:16:05,719 --> 00:16:09,670 Again, each location has these coordinates property, 296 00:16:09,670 --> 00:16:12,693 and so that's where we now are reading the coordinates from. 297 00:16:13,915 --> 00:16:16,323 Location.coordinates. 298 00:16:18,040 --> 00:16:23,040 And then, finally, add to and then our map variable. 299 00:16:25,070 --> 00:16:28,850 So this map here is this map variable where we 300 00:16:28,850 --> 00:16:33,093 created our new Mapbox.map right in the beginning. 301 00:16:34,507 --> 00:16:38,320 And now, all we need to do to finish, 302 00:16:38,320 --> 00:16:40,463 is to actually extend our bounds. 303 00:16:41,490 --> 00:16:46,490 So bounds.extend and also with locations, or actually "loc", 304 00:16:48,540 --> 00:16:52,033 which is the current location.coordinates. 305 00:16:56,310 --> 00:16:59,720 This first part here actually adds the marker, 306 00:16:59,720 --> 00:17:00,950 or it creates, 307 00:17:00,950 --> 00:17:03,120 let's actually make it even more specific, 308 00:17:03,120 --> 00:17:04,310 create marker 309 00:17:08,550 --> 00:17:09,910 then add the marker 310 00:17:11,500 --> 00:17:15,540 and then here, extend the map bounds 311 00:17:18,599 --> 00:17:21,653 to include the current location. 312 00:17:22,624 --> 00:17:25,410 But that is still not enough, 313 00:17:25,410 --> 00:17:27,849 because now we also make it so that the map 314 00:17:27,849 --> 00:17:29,560 actually fits the bounds. 315 00:17:29,560 --> 00:17:34,560 So map.fit, no not find, but fit bounds, 316 00:17:39,310 --> 00:17:41,743 and then of course our bounds object. 317 00:17:42,640 --> 00:17:43,473 Whew. 318 00:17:43,473 --> 00:17:48,473 So, a lot of work just for putting some markers on the map. 319 00:17:48,530 --> 00:17:50,829 But, again, I find it really pleasant 320 00:17:50,829 --> 00:17:52,533 to work with this library. 321 00:17:53,840 --> 00:17:55,800 And let's now actually take a look 322 00:17:55,800 --> 00:17:58,450 and I'm not really sure if everything went well here. 323 00:18:00,430 --> 00:18:02,300 And actually, it didn't, 324 00:18:02,300 --> 00:18:05,264 so our maps are not really anywhere to be found, 325 00:18:05,264 --> 00:18:07,630 let's just zoom out a little bit to see if 326 00:18:07,630 --> 00:18:09,083 they are actually somewhere, 327 00:18:10,049 --> 00:18:11,253 and they are not. 328 00:18:13,070 --> 00:18:15,220 Let's take a look at our console, 329 00:18:15,220 --> 00:18:17,883 and indeed there is some kind of error. 330 00:18:18,910 --> 00:18:23,250 So lat, longitude bounds is not a constructor, 331 00:18:23,250 --> 00:18:26,150 and indeed it is the other way around. 332 00:18:26,150 --> 00:18:28,750 So again, Mapbox, just like MongoDB, 333 00:18:28,750 --> 00:18:31,350 expects coordinates to be longitude first, 334 00:18:31,350 --> 00:18:32,900 and then latitude. 335 00:18:32,900 --> 00:18:34,314 That's what we have 336 00:18:34,314 --> 00:18:36,420 here in this name, 337 00:18:36,420 --> 00:18:38,350 and so here it should be the same. 338 00:18:38,350 --> 00:18:42,813 So longitude, latitude. 339 00:18:44,616 --> 00:18:47,193 Let's try that again here. 340 00:18:48,990 --> 00:18:51,360 Ahh, now that works. 341 00:18:51,360 --> 00:18:52,900 Very nice. 342 00:18:52,900 --> 00:18:54,660 You saw that nice zoom. 343 00:18:54,660 --> 00:18:57,290 That's what the fit bounds method does. 344 00:18:57,290 --> 00:19:00,370 So it moves and zooms the map right to the bounds 345 00:19:00,370 --> 00:19:03,000 to actually fit our markers. 346 00:19:03,000 --> 00:19:07,180 Now, you see that we have this kind of other elements here 347 00:19:07,180 --> 00:19:08,943 overlapping our map. 348 00:19:08,943 --> 00:19:11,740 And so that's because of this design that I created 349 00:19:11,740 --> 00:19:14,470 with these edges here. 350 00:19:14,470 --> 00:19:16,490 But that's no problem because we can actually 351 00:19:16,490 --> 00:19:20,323 manually specify some padding to these bounds. 352 00:19:21,290 --> 00:19:23,860 We can pass in an object here, 353 00:19:23,860 --> 00:19:27,363 and so let's say top 200 pixels, 354 00:19:30,430 --> 00:19:32,830 bottom also 200 pixels, 355 00:19:32,830 --> 00:19:35,273 and then left and right 100 pixels. 356 00:19:42,561 --> 00:19:45,100 And we don't have to specify the pixels here, 357 00:19:45,100 --> 00:19:47,883 I guess that's just me writing so much CSS. 358 00:19:50,780 --> 00:19:52,053 Let's try that again. 359 00:19:53,635 --> 00:19:55,440 Oh, nice zoom animation, 360 00:19:55,440 --> 00:19:58,023 but that didn't really respect our settings. 361 00:19:59,110 --> 00:20:02,850 And actually, that's because this is not correct. 362 00:20:02,850 --> 00:20:05,180 So, we should instead create an object, 363 00:20:05,180 --> 00:20:08,150 and then in there we need to specify the padding property, 364 00:20:08,150 --> 00:20:09,673 which then has all of this. 365 00:20:10,920 --> 00:20:11,770 So let's do that. 366 00:20:14,130 --> 00:20:14,963 Padding. 367 00:20:17,180 --> 00:20:18,013 And now, 368 00:20:19,020 --> 00:20:20,913 cut this and put it there. 369 00:20:23,970 --> 00:20:25,113 Give it a save here. 370 00:20:27,790 --> 00:20:28,883 One more time. 371 00:20:31,750 --> 00:20:34,310 Man, something is still wrong here. 372 00:20:34,310 --> 00:20:35,840 What's that? 373 00:20:35,840 --> 00:20:39,560 Ahh, and of course this code should not be here. 374 00:20:39,560 --> 00:20:43,913 It's not in the extend, it is indeed here in fit bounds. 375 00:20:45,060 --> 00:20:47,633 So this is actually where it makes sense to be. 376 00:20:52,620 --> 00:20:57,333 Let's fix this code here, and now that makes sense. 377 00:20:59,144 --> 00:21:00,890 Of course it needs to be in the fit bounds, 378 00:21:00,890 --> 00:21:03,460 which is in the end, the function who executes 379 00:21:03,460 --> 00:21:05,750 the moving and the zooming. 380 00:21:05,750 --> 00:21:07,430 That's where the padding should be, 381 00:21:07,430 --> 00:21:10,400 and we could specify a bunch of other options. 382 00:21:10,400 --> 00:21:12,320 And again, if you're interested in that, 383 00:21:12,320 --> 00:21:14,713 just go check out the documentation. 384 00:21:15,810 --> 00:21:17,680 So a third try here, 385 00:21:17,680 --> 00:21:19,730 let's hope this time I got it right, 386 00:21:19,730 --> 00:21:23,520 ahh, and yes, that looks a lot better. 387 00:21:23,520 --> 00:21:26,980 But, there is still some stuff we can improve here, 388 00:21:26,980 --> 00:21:29,680 because right now we cannot even know 389 00:21:29,680 --> 00:21:31,670 what each of these locations is. 390 00:21:31,670 --> 00:21:35,290 And so we actually want kind of a pop-up here, 391 00:21:35,290 --> 00:21:38,373 which then displays information about the location. 392 00:21:41,110 --> 00:21:45,043 Not only the marker, but we also want to add a pop-up. 393 00:21:49,270 --> 00:21:52,630 And so that's a bit similar to actually adding the marker, 394 00:21:52,630 --> 00:21:57,133 so we say new Mapbox GL.popup. 395 00:21:59,800 --> 00:22:02,300 Then, just like before, we specify the coordinates 396 00:22:02,300 --> 00:22:03,623 of that pop-up. 397 00:22:05,940 --> 00:22:07,523 So that one right here. 398 00:22:08,610 --> 00:22:11,900 Then we also need to define the html for this pop-up, 399 00:22:11,900 --> 00:22:14,990 and I'm gonna do that now using the set html method, 400 00:22:14,990 --> 00:22:17,730 because that then will allow me to add some content 401 00:22:17,730 --> 00:22:19,950 right into that html, 402 00:22:19,950 --> 00:22:24,353 so set html, and then a template string here. 403 00:22:26,040 --> 00:22:28,030 I want this to be a paragraph, 404 00:22:28,030 --> 00:22:30,760 and the information that I want to display here is 405 00:22:30,760 --> 00:22:33,630 the day at which we're going to be at this location, 406 00:22:33,630 --> 00:22:36,250 and then the name of the location. 407 00:22:36,250 --> 00:22:39,730 So basically, I want to display the day, 408 00:22:39,730 --> 00:22:43,300 so that's why we created these day properties here, 409 00:22:43,300 --> 00:22:44,753 and then the description. 410 00:22:50,170 --> 00:22:54,520 Day, and then location, remember which is the current 411 00:22:54,520 --> 00:22:56,623 location indie for each loop, 412 00:22:57,860 --> 00:22:58,853 and then day, 413 00:23:01,720 --> 00:23:03,543 location.description. 414 00:23:06,870 --> 00:23:07,980 Give it a save here, 415 00:23:07,980 --> 00:23:10,210 that looks a lot nicer now. 416 00:23:10,210 --> 00:23:14,010 And then, just like with the other one, we also need to 417 00:23:14,010 --> 00:23:19,010 do add to, and then our map variable. 418 00:23:22,130 --> 00:23:24,380 And this will not look perfect, because we need to 419 00:23:24,380 --> 00:23:26,730 specify some options, but I still wanted to 420 00:23:26,730 --> 00:23:29,083 show you the result at this point. 421 00:23:32,070 --> 00:23:35,100 And so, you see that they actually overlap 422 00:23:35,100 --> 00:23:36,453 the markers now. 423 00:23:37,920 --> 00:23:41,083 We can actually fix that using an offset property. 424 00:23:43,560 --> 00:23:46,883 We pass that options right here into the new pop-up. 425 00:23:48,396 --> 00:23:49,770 We say 426 00:23:51,390 --> 00:23:54,940 offset of 30 pixels. 427 00:23:54,940 --> 00:23:57,081 And I also noticed that we have a bit too much 428 00:23:57,081 --> 00:23:59,840 padding at the bottom, 429 00:23:59,840 --> 00:24:04,840 so let's reduce that to 150 and do this again. 430 00:24:09,610 --> 00:24:13,190 And so, this looks pretty nice I think. 431 00:24:13,190 --> 00:24:15,750 So whoever now takes a look at our page, 432 00:24:15,750 --> 00:24:18,609 can very quickly see what kind of itinerary 433 00:24:18,609 --> 00:24:21,533 will be on this tour. 434 00:24:21,533 --> 00:24:23,740 And if there's too much information, 435 00:24:23,740 --> 00:24:26,423 we can also close up these pop-ups. 436 00:24:27,680 --> 00:24:30,700 And we could really add all kinds of stuff to this map. 437 00:24:30,700 --> 00:24:33,440 For example, we could create this lines 438 00:24:33,440 --> 00:24:35,250 here between these points, 439 00:24:35,250 --> 00:24:38,570 and join them together, like a green line here or something. 440 00:24:38,570 --> 00:24:41,096 Or we could also display the real route 441 00:24:41,096 --> 00:24:42,820 from one point to the other 442 00:24:42,820 --> 00:24:45,350 by using basically directions, 443 00:24:45,350 --> 00:24:47,610 but let's keep it simple here. 444 00:24:47,610 --> 00:24:49,990 The only thing that is left to do here for me, 445 00:24:49,990 --> 00:24:53,430 is to actually disable the zoom functionality. 446 00:24:53,430 --> 00:24:55,320 Because right now, let's say that we are 447 00:24:55,320 --> 00:24:57,230 zooming on this page, 448 00:24:57,230 --> 00:24:59,400 or actually if we're scrolling on this page, 449 00:24:59,400 --> 00:25:01,450 and so once we reach this here, 450 00:25:01,450 --> 00:25:03,740 and then keep scrolling here, 451 00:25:03,740 --> 00:25:08,740 then we scroll the map instead of the page. 452 00:25:09,034 --> 00:25:12,060 That's not a good user experience, 453 00:25:12,060 --> 00:25:13,673 and so all we need to do now 454 00:25:13,673 --> 00:25:17,110 is to basically disable the scrolling functionality 455 00:25:17,110 --> 00:25:18,410 on this map. 456 00:25:18,410 --> 00:25:22,880 We will still allow people to pan around like this, 457 00:25:22,880 --> 00:25:24,883 but zooming is going to be disabled. 458 00:25:26,200 --> 00:25:29,463 Let's go here to our map and add that. 459 00:25:30,743 --> 00:25:33,760 And we're not using interactive defaults, 460 00:25:33,760 --> 00:25:35,970 because then we could not even pan the map. 461 00:25:35,970 --> 00:25:39,317 But again, that should at least be allowed. 462 00:25:39,317 --> 00:25:43,680 The option that I'm setting here is scroll zoom false. 463 00:25:46,580 --> 00:25:49,202 And again, for all the possible options 464 00:25:49,202 --> 00:25:50,888 that you could set here, 465 00:25:50,888 --> 00:25:55,190 please just go ahead and take a look at the reference. 466 00:25:55,190 --> 00:25:58,730 And so now, when we put our mouse here and scroll, 467 00:25:58,730 --> 00:26:01,463 it doesn't change the zoom level. 468 00:26:03,040 --> 00:26:04,530 Perfect. 469 00:26:04,530 --> 00:26:09,060 We can still pan, and so I think it looks really nice now. 470 00:26:09,060 --> 00:26:12,083 Let's test this out in another one. 471 00:26:12,920 --> 00:26:14,653 Let's say here the forest hiker. 472 00:26:17,290 --> 00:26:19,450 And so, that still works. 473 00:26:19,450 --> 00:26:22,130 And these here are kind of overlapping, 474 00:26:22,130 --> 00:26:25,553 but no problem, we can always close them if we want. 475 00:26:28,120 --> 00:26:30,713 Let's take a look here for example, sea explorer. 476 00:26:32,420 --> 00:26:33,440 And if we're quick enough, 477 00:26:33,440 --> 00:26:35,231 we can even see the zoom animation 478 00:26:35,231 --> 00:26:38,100 moving the map to that location. 479 00:26:38,100 --> 00:26:39,890 Okay, perfect. 480 00:26:39,890 --> 00:26:42,680 So I hope you were able to really follow along 481 00:26:42,680 --> 00:26:46,670 this example with everything we did in Mapbox. 482 00:26:46,670 --> 00:26:49,060 Now in case that anything didn't work, 483 00:26:49,060 --> 00:26:50,330 please make sure that you're using 484 00:26:50,330 --> 00:26:51,863 a similar version to mine, 485 00:26:52,870 --> 00:26:56,500 so what I mean is a similar version of the Mapbox library. 486 00:26:56,500 --> 00:26:59,403 Which in my case here is version 0.54. 487 00:27:00,870 --> 00:27:04,363 Yours should probably not be 1.something. 488 00:27:05,250 --> 00:27:06,600 So if you're watching this video a 489 00:27:06,600 --> 00:27:10,430 long time after this recording and have a V1 here, 490 00:27:10,430 --> 00:27:14,891 then please go ahead and change that to 0.something, 491 00:27:14,891 --> 00:27:18,213 so that there are basically no breaking changes there. 492 00:27:19,242 --> 00:27:24,242 Anyway, with that, we actually wrap up our tour page, 493 00:27:24,560 --> 00:27:27,140 and so we no longer need any of this, 494 00:27:27,140 --> 00:27:30,140 the map is also there, 495 00:27:30,140 --> 00:27:34,740 and so, this part of the website is actually finished. 496 00:27:34,740 --> 00:27:35,573 Awesome. 497 00:27:35,573 --> 00:27:38,660 Congratulations for making that a reality, 498 00:27:38,660 --> 00:27:42,200 for really starting to build this beautiful website 499 00:27:42,200 --> 00:27:44,200 using all these amazing technologies 500 00:27:44,200 --> 00:27:45,663 that you've learned so far. 38279

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.