[Музика грає] Виступаючий 1: Ну, ось ми, останній P безліч в CS50. Привітати себе від необхідності так далеко, так як ваш перший привіт світи та роздрукувавши піраміди для Маріо. Ви зробили сайт минулого тижня. І ми збираємося робити ще один на цьому тижні, який дозволяє їздити навколо кампуса Гарвардського, вибираючи до CS50 співробітники та повертаючи їх до їх житлові будинки. Зараз минулого тижня ми працювали в PHP, сервера мову сторона. Для цього P набору, ми стаємо введений на JavaScript, який мову на стороні клієнта. Отже, давайте поглянемо на деякі з Код розподілу, який надається Ви для цього P набору. У папці JavaScript, там буде бути купа файлів JavaScript. Там в buildings.js, який містить Масив будівель навколо Гарварді кампус, з їх інформацією і положення. Houses.js являє собою масив з Гарварду житлові будинки, з їх широти і довготи. Passengers.js містить масив пасажирів - співробітники CS50 - що ви будете повернути до їх житлових будинків. Math3D.js, що містить багато функції, щоб зробити з рухом. Якщо ви математично налаштованих, то я вітаю ви подивіться. Але ви не повинні розуміти все там. Shuttle.js, що має справу з Рух шаттла. І index.html є домашня сторінка, де все відбувається, насправді, де користувач взаємодіє з сайтом. Service.css є лист CSS стиль, який, на додаток до Twitter Початкового завантаження бібліотеки, органи управління як index.html виглядає. А потім у нас також є service.js, які містить сервісні функції для Трансфер. І ось те, де ви збираєтеся бути заповнивши деякі в ДОС. Тепер давайте поглянемо на об'єктах і асоціативні масиви в JavaScript, який для всіх намірів і цілей є взаємозамінними. Якби я хотів зробити об'єкт змінну називається паличка, я б оголосимо його. І всередині цих фігурних дужках я б вказати ядро ​​єдиноріг. Деревина вишні. І довжина становить 13. Тепер я можу також доступ до значень об'єктів з використанням асоціативна позначення масиву. Так паличка Базовий індекс, я можу встановити що дорівнює єдиноріг, або переконайтеся, що, якщо мені потрібно. Або я можу використовувати оператор точки. Жезл точка деревини дорівнює вишня, і так далі, і тому подібне. Отже, ви бачите, що асоціативні масиви і об'єкти в JavaScript будуть взаємозамінні, і воля прийти в дуже зручно. Потім ми бачимо масив будівель в buildings.js. Знову ж, масив об'єктів. Якби я хотів зробити масив з кращих будівлі на Гарвардського університетського містечка, то Я хотів би зробити це таким чином. Використовуючи ці позначення об'єкта, де Я зберігаю кореневої, ім'я, адреса, широта, і довгота для кожного один об'єкт будівництва. Давайте швидко говорити про змінних в JavaScript. Як PHP, JavaScript змінні слабо або вільно набрали. Щоб створити локальну змінну, Ви передуватимете ім'я змінної з V-A-R, вар. Зараз в JavaScript, функції будуть обмежити область видимості змінних. Так що якщо у вас є локальна змінна в функція, то інші функції не може отримати до нього доступ. Але на відміну від C, петлі і умови не обмеження обсягу змінної. Так що навіть якщо ви розкажете його всередині стан, вся функція буде мати доступ до нього. Тепер без вар, змінна носитиме глобальний характер. Так що якщо ви просто оголосити ім'я і присвоїти значення, то, що змінна буде глобальна змінна в JavaScript. Тепер в будинках, у нас є асоціативну Масив об'єктів типу будинок, де кожен будинок знаходиться всього в широти і довгота. Тоді у нас є пасажирів масив, який є масивом типу об'єкта пасажира. Таким чином, кожен пасажир має ім'я користувача, ім'я, і ​​будинок. Зверніть увагу, що я бачу типу Пасажир, який насправді просто означає, що кожен об'єкт має ж значення ключа пари. Таким чином, кожен об'єкт типу пасажира має ім'я користувача, ім'я, і ​​будинок. Так що ж нам потрібно зробити для P знімальному майданчику? Ну, ми повинні дозволити користувачам вибирати до співробітників, щоб показати всі співробітники, які в даний наш маршрутний автобус, і висадити їх. І тоді ми будемо також говорити про додаткові особливості, які можуть бути реалізовані для Трансфер P безліч. Але давайте поговоримо про пікап в першу чергу. Особи CS50 персоналу була посадили у всьому кампусі, де кожен Особа реалізований як місце марки на 3D землі, і як маркер на 2D-карті. Так що, коли користувач натискає на пікап Кнопка, ми хочемо додати неподалік пасажирів у маршрутному автобусі. І ми також хочемо, щоб видалити їх місце помітити від світу, і видалити їх Маркер з карти, вказуючи, що вони в нашому трансферному автобусі зараз. Так як же нам визначити, що пасажири знаходиться в зоні нашого човника? Ну, функція відстані - так Трансфер відстань точка, передаючи широта і довгота, буде обчислити відстань від струму Положення трансфер до вказують, що ви задаєте з цим враховуючи широту і довготу. Таким чином, ви можете використовувати це для обчислення Відстань від маршрутного автобуса, щоб пасажирів. Але як ви знаєте, де пасажири? Ну, ось де ми повинні будемо редагувати функцію заповнення. Заповніть Places все із співробітників і пасажири в світ, і в карті, але не зберігати їх розташування. Так що, можливо, ви можете зберігати їх розмістити знаки і маркери в деякому глобальному масиві. Зараз вже є глобальний масив зберігання інформації від пасажирів. Пасажири масиву магазини кожен Ім'я пасажира, і їх будинок. Тому, можливо, ви можете додати кілька параметрів там пасажирських об'єктів. Щоб допомогти нам виявити всіх пасажирів в межах досяжності нашого маршрутного автобуса, давайте цикл по всіх пасажирів в масиві пасажирів. Для петлі в JavaScript може виглядати щось на зразок цього, дуже схожий на ті, для петлі в С. Або ми можемо використовувати Альтернатива для структурі циклу. Для УАГ I в масиві, де я все ще буде індекс. Але вам не потрібно вказувати довжина масиву точка стан, і я плюс плюс. Розташування кожного пасажира складає дається їх місця етикетки. Але місце символ не широта і довгота. У нас є доступ до цих параметри, отримання геометрію, використовуючи Пошук геометрії на місці знака. А потім, коли ми маємо геометрію, отримання або широту або довгота, використовуючи ці функції. Так що тепер ми знаємо, як виявити чи пасажири знаходяться в межах Асортимент нашого шаттла. Як тільки ми отримаємо тих пасажирів, ми будемо хочете додати будь пасажирів, які в межах цього діапазону. Ми хочемо, щоб дозволити їм стрибати на і зайняти місце на нашому трансферному автобусі, але тільки якщо у нас є достатньо місця для них. Масив трансфер точка сидіння буде вказують місця, чи є порожніми, або хто в цьому кріслі. Так що, якщо місце порожнім, то що місце буде нульовим. Так ітерації по масиву місць, перевірка на порожні місця, зберігання пасажири в ці місця, поки Ви немає ніяких більш порожні місця. І, на жаль, ніяких інших пасажирів доведеться чекати наступного разу шатл й пожнеш. Як тільки вони отримають на шатлі, ми хочемо видалити їх місце знак, який є їх фото в 3D-світі. Якби я хотів, щоб видалити місце Mark P, то я хотів би отримати всі функції, від мого землі, від Google Earth, , А потім видалити, що конкретне місце помітити за допомогою функції RemoveChild. Тоді, нарешті, давайте приберемо маркер, значок на карті 2D для будь-якого пасажир, що ми встають. Щоб видалити маркер, т, то я буду просто виконати м точка setMap нуль. Робіть це протягом будь-яких пасажирів у межах діапазону, і ви закінчили пікап.