>> [Музика грає]
>> Виступаючий 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 нуль.
Робіть це протягом будь-яких пасажирів у межах діапазону, і ви закінчили пікап.