>> [Музыка играет]
>> Выступающий 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 нуль.
Делайте это в течение любых пассажиров в пределах диапазона, и вы закончили пикап.