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