[REPRODUCCIÓ DE MÚSICA] ALTAVEU 1: Bé, aquí estem, l'última sèrie P en CS50. Feliciti a si mateixos de tenir arribat tan lluny, ja que la seva primera hola mons i imprimir piràmides de Mario. Vostè ha fet un lloc web la setmana passada. I estarem fent una altra aquesta setmana, un que li permet al conduir pel campus de la Universitat de Harvard, recollint fins als membres del personal, i CS50 portar de tornada al seu cases residencials. Ara l'última setmana hem treballat en PHP, un llenguatge del costat del servidor. Per a aquest conjunt P, ens anem a introduir a JavaScript, que és un llenguatge del costat del client. Així que donem una ullada a alguns dels codi de distribució que es proporciona que per a aquest conjunt P. A la carpeta de JavaScript, haurà ser un munt d'arxius de JavaScript. Hi ha buildings.js, que conté un conjunt d'edificis al voltant de Harvard campus, amb la seva informació i la posició. Houses.js és una matriu de Harvard cases residencials, amb el seu latituds i longituds. Passengers.js conté un gamma de passatgers - els membres del personal CS50 - que vostè va a portar de tornada a casa residencials. Math3D.js, que conté una gran quantitat de funcions que fer amb el moviment. Si vostè és de ment matemàtica, a continuació, dono la benvinguda a que doneu un cop d'ull. Però vostè no necessita entendre tot allà. Shuttle.js, que s'ocupa de El moviment de la llançadora. I index.html és la pàgina principal on tot passa, en realitat, en què el usuari està interactuant amb el lloc. Service.css és el full d'estil CSS, que, a més de la Twitter Biblioteca Bootstrap, controls com index.html mirades. I després també hem service.js, que conté funcions de servei per el servei de transport. I aquí és on vostè va a estar omplir en alguns dels al DOS. Ara donem una ullada als objectes i matrius associatives en JavaScript, que per a tots els efectes, són intercanviables. Si volgués fer un objecte una variable anomenat una vareta, em declarar. I dins d'aquestes claus que ho faria especificar el nucli és unicorn. La fusta és la cirera. I la longitud és de 13. Ara també puc accedir als valors dels objectes que utilitzen notació de matriu associativa. Índex estructural Així vareta, puc establir que potser l'unicorn, o comprovar que, si el que necessito. O puc utilitzar l'operador punt. Fusta dot Vareta equival cirera, i així successivament, i així successivament. Així que ja veus que les matrius associatives i objectes en JavaScript seran intercanviables, i la voluntat venir en molt pràctic. Després veiem una sèrie d'edificis en buildings.js. Un cop més, una sèrie d'objectes. Si volgués fer una sèrie dels millors edificis al campus de Harvard, i després Jo ho faria de la següent manera. Usant aquesta notació objecte, on Emmagatzemo l'arrel, el nom, l'adreça, latitud i longitud per a cada objecte únic edifici. Anem ràpidament a parlar de les variables en JavaScript. Com PHP, les variables JavaScript estan feblement o mal escrit. Per crear una variable local, el prefix el nom de la variable amb el V-A-R, var. Ara en JavaScript, les funcions es limitar l'abast de les variables. Així que si vostè té una variable local dins una funció, llavors altres funcions no poden accedir-hi. Però a diferència de C, els bucles i les condicions no ho fan limitar l'abast d'una variable. Així que fins i tot si es declara dins d'un condicions, tota la funció es tenir accés. Ara sense var, la variable serà global. Així que si vostè acaba de declarar el nom i assignar un valor, llavors aquesta variable serà una variable global en JavaScript. Ara bé, a les cases, tenim un associativa array d'objectes de tipus casa, on cada casa és només una latitud i una longitud. Després tenim als passatgers matriu, que és una matriu del tipus d'objecte de passatgers. Així que cada passatger té un nom d'usuari, un nom, i una casa. Observi que estic veient de tipus de passatgers, que en realitat només significa que cada objecte té el mateix parell de valors clau. Així que cada objecte de tipus passatger té un nom d'usuari, un nom, i una casa. Llavors, què hem de fer per al conjunt P? Bé, hem de permetre als usuaris triar fins als membres del personal, mostrar tots els membres del personal que estan actualment en el nostre servei de transport, i per deixar-los anar. I després també parlarem addicional característiques que es poden implementar per el conjunt P de transport. Però parlarem de pickup primer. Els rostres de personal CS50 han estat plantat per tot el campus, on cada la cara s'implementa com una marca de lloc a la terra 3D, i com marcador al mapa 2D. Així, quan l'usuari fa clic a la camioneta botó, volem afegir proper els passatgers a la llançadora. I també volem treure el seu lloc marca del món, i retiri el seu marcador al mapa, el que indica que que estan al servei de transport ja. Llavors, com detectar si els passatgers estan dins de l'abast del nostre servei de trasllat? Doncs bé, la funció distància - de manera que la distància de punts d'enllaç, passant la latitud i la longitud, la voluntat calcular la distància des del corrent posició de la llançadora a la assenyala que especifiqui amb aquesta donada la latitud i longitud. Així que vostè pot utilitzar això per a calcular la distància des del transport a la passatgers. Però, com saber on els passatgers són? Bé, aquí és on haurem de editar la funció poblar. Omplir tots els llocs dels membres del personal i els passatgers en el món, i al mapa, però no ho fa emmagatzemar la seva ubicació. Així que potser vostè pot emmagatzemar el seu col · locar marques i marcadors d'alguna matriu global. Ara ja hi ha una matriu global emmagatzemar la informació dels passatgers. Les botigues de passatgers cada array El nom del passatger i de casa. Així que potser vostè pot afegir alguns paràmetres allà als objectes de passatgers. Per ajudar-nos a detectar tots els passatgers dins de l'abast del nostre servei de transport, anem a bucle a través de tots els passatgers en la matriu de passatgers. Un bucle en JavaScript podria veure alguna cosa com això, molt similar a la els de bucle en C. O podem utilitzar un alternativa per a l'estructura de bucle. Per var i a la matriu, on em seguirà sent l'índex. Però vostè no necessita especificar la longitud de la matriu de punts condició, i jo plus plus. La ubicació de cada passatger és donada per la seva marca de lloc. Però la marca de lloc no és el la latitud i la longitud. Hem d'accedir a aquests paràmetres per aconseguir la geometria, fent servir get la geometria en la marca del seu lloc. I després, una vegada que tenim la geometria, obtenir ja sigui la latitud o la longitud, utilitzant aquestes funcions. Així que ara que sabem com detectar si els passatgers estan a gamma del nostre transport. Un cop tinguem els passatgers, anem a voleu afegir qualsevol passatger que són dins d'aquest rang. Volem que els permeti pujar a, i seure al nostre servei de transport, però només si tenim prou espai per a ells. La matriu de seients de punts d'enllaç es indiquen si els seients estan buits, o que està en aquest seient. Així que si hi ha un seient buit, aquest seient serà nul. Així iterar sobre la matriu de seients, la comprovació de seients buits, emmagatzemar els passatgers als seients fins que no tenen cap escó més buides. I, per desgràcia, cap resta dels passatgers haurà d'esperar que el propera vegada que el servei de transport, torna. Una vegada que aconsegueixen a l'autobús, anem a voler per eliminar la seva empremta lloc, que és la seva foto en el món 3D. Si volgués suprimir un lloc mark p, llavors m'agradaria tenir totes les característiques de la meva terra, des del Google Earth, i després eliminar aquest lloc específic marcar utilitzant la funció removeChild. Després, finalment, anem a eliminar el marcador, la icona del mapa en 2D per a qualsevol passatgers que estem recollint. Per eliminar un marcador, m, llavors vaig a només cal executar m dot setMap nul. Feu això per als passatgers dins de la gamma, i que hagi acabat la collita.