[MUSIC kucheza] DAVID J. Malan: Hello. Hebu kuchukua kutembea kwa njia ya Tatizo Set 8 Mashup, ambayo ni kwenda changamoto ya kuteka juu ya mambo kwa ajili ya Google Maps na mambo kutoka Google News na mash nao pamoja katika mtandao applet kwamba inaruhusu mtumiaji kutafuta ramani ya habari za mitaa miji maalum, miji, na codes zip. Kwa kufanya hivyo, tunakwenda kuunganisha baadhi HTML, CSS, PHP, SQL, JavaScript, na mbinu ujumla inayojulikana kama AJAX ili kujenga immersive user uzoefu. Hebu kwanza kwa Google Maps yenyewe. Hii, bila shaka, labda ni interface familiar. Lakini zinageuka kuwa Google Maps Pia hutoa API-- maombi programu interface-- kupitia ambayo unaweza kuchukua mambo ya Google Maps na kuunganisha yao katika maombi yako mwenyewe. Hakika, katika hili mchakato, wewe kwenda kupata michache ya URLs inasaidia hasa kwamba wametajwa katika vipimo kwa ajili ya Tatizo Set 8, hasa hii Anza Kuongoza au Developer ya Guide kwa ajili ya Google Maps API Version 3 kama vizuri kama Maps Google JavaScript API v3 kumbukumbu, ambayo ni kidogo zaidi arcane kusoma lakini kwa kweli ina wote wa ngazi ya chini maelezo kuhusu kazi gani au njia na vitu na mali na matukio kweli kuja na API, sawa sana katika roho kwa [inaudible] kurasa. Sasa kama sisi kuangalia katika Google News, utasikia labda kuona interface familiar hapa. Lakini zinageuka unaweza pia kutafuta Google News kwa geographies maalum kupitia parameter HTTP kuitwa geo. Kwa kweli, kama mimi zoom katika hapa, utaona kwamba Mimi nina katika news.google.com/news/section?geo=02138. Na, kwa hakika, kama mimi zoom nje, utaona kwamba mimi nina kuangalia ukurasa na rundo zima la maoni kuhusu Cambridge, Massachusetts. Wakati huo huo, kama mimi kweli mabadiliko URL, si kwa kuwa zip code kama hii, lakini kitu kidogo Messier kama Cambridge, + Massachusetts, ambapo pamoja na ni njia encode nafasi tabia katika URL na hit Enter, utaona kwamba mimi kwa kweli kuona karibu habari hiyo. Pengine ni kidogo tofauti kwa sababu Cambridge kweli ina codes nyingi zip. Sasa jinsi gani mimi kujua kwamba, na kwa kweli, ni jinsi gani mimi kwa namna fulani kufunga miji na vijiji kwa codes zip katika kesi mimi wanataka kuruhusu user kuangalia juu ama? Naam, zinageuka kuwa kuna tovuti huko nje iitwayo geonames.org ambayo ni mpango wa kuwa na database inapatikana kwa uhuru wa kila aina ya habari ya kijiografia, si tu kwa ajili ya Marekani, lakini pia kwa nchi nyingine pia. Kwa kweli, kama mimi kwenda URL hii hapa, ambayo Pia umetajwa katika tatizo kuweka vipimo, utaona ni tatu orodha ya rundo zima la files zip yoyote ambayo inaweza kupakuliwa na wewe. Kwa kweli, kwa tatizo hili kuweka utaenda kushusha us.zip. Sasa ndani ya faili hili, ni mzima rundo la data katika muundo wa maandishi. files ni sawa na CSV-- Comma Kinachotenganishwa Maadili file-- lakini kwa kweli anatumia tabo ya kutenga mashamba. Sasa, wakati huo huo, kama ukiangalia hapa katika kile nimepata yalionyesha, mashamba katika faili hii ni kwenda kuwa mambo kama codes nchi, codes posta, majina ya mahali, na kisha, kwa namna fulani au nyingine, majimbo na kata, jamii, na zaidi. Kwa kweli, mimi wameweza tayari kupakuliwa faili hili mapema. Hebu kwenda mbele na kufungua ni here-- us.text-- na kwa kweli, utasikia kuona kama mimi kitabu chini ya mstari 16792 utaona kumbukumbu chache kwa ajili ya Cambridge, Massachusetts na codes zake mbalimbali zip. Nini pia kuona kuna kata, idadi ya baadhi ya kuwa mimi si kweli kuelewa, bali pia wote njia juu ya haki, baadhi GPS coordinates-- latitude na longitude. Hii ni kubwa kwa sababu moja ya sifa za Google Maps API ni uwezo wa kuchunguza ambapo wewe ni kijiografia katika suala la GPS kuratibu. Sasa hebu kuanza kufikiri jinsi ya kuanza zililingana mambo haya kwa pamoja. Tumekuwa kupewa nzima rundo la usambazaji code, vilevile MySQL database. Kwa kweli, kama mimi kuvuta phpMyAdmin kuwa tayari nje, kama wewe hivi karibuni mapenzi, pset8.SQL, utaona meza MySQL kwamba inaonekana kama hii, uwanja ID, nchi code, kanuni posta, jina la mahali na zaidi. aina ya wale wote nguzo mimi inayotokana tu kwa kusoma readme.text faili hapa kwamba maalum kama shamba ni integer, au varchar au kama. Hivyo tumekuwa umba kwamba meza kwa ajili ya kwenu na kupewa wewe amri SQL kutekeleza kujenga kwamba meza katika database yako mwenyewe, lakini kuna kweli hakuna data katika yake bado. Badala yake, wewe ni kwenda kuwa na download us.zip au zip nchi yoyote faili na kwamba URL huko. Na kisha utaenda kuwa na kuandika mstari amri script katika PHP kwamba kwenda kufungua Nakala kwamba faili, iterate juu ya mistari yake, na kisha kwa kila moja ya wale mistari kufanya insert katika kwamba maeneo meza katika database yako MySQL. Hivyo mwisho wa mchakato huu, itabidi kukimbia kwamba script hatimaye mara moja tu katika nadharia. Katika hali halisi itabidi pengine kuendesha rundo la nyakati wakati kujaribu kurekebisha mende mbalimbali. Hatimaye, wewe ni kwenda kuwa na database kubwa kweli kweli na maelfu na maelfu ya safu ya kijiografia. Basi wewe ni kwenda kuweka kwamba kuagiza script kando mara moja ni kazi na database yako ni nzuri na sahihi, na kisha wewe ni kwenda na hoja juu ya kweli kutekeleza mashup yenyewe. mashup ni kwenda kuangalia kitu kidogo kama hii. Wakati mashup.cs50.net, sisi kuwa na ufumbuzi wafanyakazi kwamba inaonekana kitu kidogo kama hii. Hakika, kama mimi bonyeza gazeti hili icon kwa Cambridge, Massachusetts, utaona inazunguka icon kifupi na kisha kuamuru orodha, a Vitone orodha ya makala kuhusiana na Cambridge, Massachusetts. Kama mimi bonyeza Charlestown, Massachusetts, Mimi utaona sawa kwa mji huo. Na Kama mimi bonyeza Watertown, Massachusetts, kuna wanaweza kuwa yoyote habari za kutoka Watertown, hivyo utaona kitu kama polepole siku habari. Sasa, wakati huo huo, juu kushoto ni baadhi familiar Google Maps udhibiti basi wewe zoom nje, sufuria juu, chini, kushoto, na kulia, lakini pia sanduku tafuta kwamba sisi kuweka huko. Hivyo kama mimi kutafuta, kusema ukweli, tu nyingine zip code Mimi najua, 90210, tutaweza kweli kuona Beverly Hills, California. Wakati clicked ni inaongoza mimi California na rundo zima wa habari kuhusu Beverly Hills. Sasa angalia, pia, kilichotokea huko. Kama mimi search wakati huu kwa ajili ya 02138 au hata Cambridge comma Massachusetts au baadhi ya lahaja yake, unaweza kupata kidogo autocomplete dropdown. Sasa hii ni kwa kutumia Plugin kwa ajili ya maktaba kuitwa jQuery, na kwamba Plugin aitwaye typeahead. Sisi tu kusoma kwa njia ya nyaraka, kupakuliwa .js faili jumuishi ndani ya usambazaji code ili hatimaye unaweza kuandika kificho kwamba fyller kwamba orodha dropdown na auto uchaguzi au mapendekezo ya magari. Sasa usambazaji code, ingawa, kwamba umepokea haina kufanya karibu kama mengi. Unaweza kupata Google Map iliyoingia, na kupata udhibiti juu kushoto, na wewe kupata sanduku ya utafutaji. Lakini kama mimi aina ya kitu kama 02138, hakuna maeneo ni kupatikana bado. Hivyo kwamba kinaendelea kuwa moja ya malengo yetu hapa. Aidha, kama wewe kuchukua hatua nyuma na kuangalia ramani yenyewe, hakuna habari yoyote. Hata kama mimi click na Drag, hakuna markers kweli kuonekana kwa habari kwa sababu kwamba changamoto ni wa kushoto kwa ajili yenu pia. Hebu tuangalie basi katika usambazaji code. Mara ve kupakuliwa pset8.zip na unzipped ni katika vhost saraka yako katika CS50 Appliance, utaona haya directories hapa ndani. Bin-- ambayo kwa ujumla anasimama kwa binary kwa ajili ya executable programs-- pamoja, kama katika pset7, baadhi PHP files kwamba files nyingine ni pamoja na, basi umma, ambayo ni files kwamba haja kuwa hadharani kupatikana kwa mtumiaji na browser. Hebu tuangalie katika bin directory, na tutaweza kuona kwamba kuna faili kuna tayari kuitwa Import. Kama sisi kufungua hili na gedit, tutaweza kuona kwamba, kwa bahati mbaya, kuna si mengi huko. Yote ni pale, ingawa, ni shebang saa ya juu ambayo inabainisha ambayo interpreter-- katika kesi hii PHP-- itumike kwa kweli nitafanya faili hii. Lakini basi ambapo anasema TODO ni wapi uko kwenda haja ya kuandika baadhi ya kanuni kwamba pengine inahitaji config faili kwamba katika pamoja na directory kama tumefanya kabla na files PHP. Na kisha utaenda kuwa na namna fulani kufungua us.text ambayo labda kuwa unzipped tayari. Basi wewe ni kwenda kuwa na iterate juu ya mistari katika faili kwamba, labda kwa kutumia baadhi ya kazi alipendekeza katika vipimo. Kisha kuingiza kila moja ya hizo mistari kwenye MySQL database kwa kutumia swala kazi, ambayo tumekuwa tena zinazotolewa with-- au angalau lahaja yake katika functions.php, ambayo tutaweza kuona katika muda tu. Sasa hebu karibu kuagiza na kwenda nyuma ya directory yetu na wakati huu kwenda katika pamoja. Na kama mimi kufanya ls huko, utaona files tatu kabisa kama Tatizo Set 7. Na hebu tuangalie kwa haraka, kwa mfano, katika config.php. Huko, ni mistari chache kuliko kabla, na Inaonekana faili hili pamoja na constants.php na functions.php. Sisi ni kutumia tofauti kidogo mbinu wakati huu kwa kweli bayana kwamba files haya ni jamaa kwa saraka ya sasa __ DIR__ inawakilisha chochote saraka hii file, config.php, ni yenyewe katika. Hivyo hii ni zaidi njia ya wazi ya kubainisha nini files nyingine unataka kuhitaji. Sasa kama mimi karibu faili hii na kufungua constants.php badala yake, utaona faili kukumbusha kwa Set Tatizo 7 ya pamoja, pamoja na na database tofauti inayoitwa pset8. Hatimaye, katika functions.php, tutaweza kuona kazi moja tu wakati huu inaitwa swala. Hii ni karibu sawa isipokuwa sisi kushughulikia makosa wakati huu kidogo tofauti, lakini ni matumizi ni sawa katika tatizo kuweka saba. Sasa hebu kwenda nyuma katika pset8 wetu directory, kwenda katika umma, na katika huko kama mimi kufanya ls, utaona this-- articles.php, index.html, search.php, na update.php-- mafaili yote. Na kisha fonts css, img, na JS directory kabisa kama pset7. Hebu tuangalie index.html, ambayo ni kwenda kuwa kweli hatua ya kuingia kwa smashup. Sasa katika index.html, utaona nzima rundo la mambo kiungo katika kichwa, hasa, kwa bootstrap kwa yetu wenyewe CSS ikifuatiwa na rundo zima la script vitambulisho kwa ajili ya mambo kama ramani, API yenyewe, marker maalum na studio shirika kwamba sisi zilizotajwa katika vipimo inapatikana na wewe, jQuery yenyewe, bootstrap yenyewe, na maktaba nyingine kuitwa underscore ambayo sisi majadiliano juu katika spec. Underscore.js kama jquery.js ni maktaba JavaScript ambayo ina rundo zima la utendaji kwamba mengi ya watu katika ulimwengu unataka kuwepo katika JavaScript yenyewe. Hivyo yote haya ni kweli maarufu kabisa. Tumekuwa pia alieleza typeahead ambayo ni maktaba ambayo gani kwamba autocomplete dropdown na hatimaye kiungo kwa mwenyewe JavaScript yetu. Wakati huo huo, na pengine nashiriki, hii mashup inaendeshwa na kiasi kidogo HTML hapa chini chini. Ilani kwamba tumekuwa maalum div katika mwili wetu wa darasa la-chombo maji. Hii, kwa bootstrap ya nyaraka, tu ina maana kwamba div hii ni kwenda kujaza kutazama au dirisha browser ya kikamilifu. Wakati huo huo, chini ya kwamba tuna div hiyo kufunguliwa na mara moja imefungwa na ID ya kipekee ya ramani turubai. Hii sasa ni kutoka Google Ramani nyaraka kwa API wake, ambapo mimi tu haja ya kuwa div tupu ndani ambayo kuingiza, hatimaye, Maps halisi Google. Lakini zaidi juu ya kwamba katika kidogo tu. Mwisho, kuna aina ndani ya hapa ambayo zana Nakala sanduku up juu kushoto katika interface yetu kwa ajili ya kutafuta. Taarifa kwamba tumekuwa kutumika kidogo ya bootstrap hapa too-- mambo kama fomu-inline na aina ya kundi. Tumekuwa kupewa zamani kipekee ID fomu. Na kisha, hatimaye, mimi kwa kweli kuwa na aina ya pembejeo, ambayo ni pretty utambuzi, ambao ID ni q. Tu mkataba. Q kwa query-- inaweza kuwa wameitwa chochote. Na kisha placeholder, wakati huo huo, ni mji, jimbo, na kanuni ya posta ambayo unaweza kukumbuka kuona katika mashup yetu demo mapema. Hebu karibu faili hii. Sasa tuangalie files PHP kwamba wakisubiri na kisha files JavaScript. Katika files wetu PHP, tumekuwa tayari kutekelezwa kwa ajili yenu, kwa mfano, updates. Update.php-- sisi si kutumia kubwa kiasi ya muda juu ya here-- kwa kifupi ni faili kwamba yetu JavaScript code ni kwenda kuwasiliana kupitia AJAX kwamba Asynchronous mbinu hiyo kujengwa katika JavaScript siku hizi kwamba ni kwenda kuruhusu sisi kuuliza update.php kwa maelezo zaidi. Hasa, wakati wowote user drags ramani au hufanya search kwamba anaruka mtumiaji eneo jingine, JavaScript code yetu, kama tutaweza hivi karibuni kuona, ni kwenda kuwaita update.php na kuuliza kwa ajili ya 10 au hivyo markers ndani ya kutazama misingi juu ya GPS kuratibu ya juu na chini pembe ya ramani hiyo. Sisi basi unaweza kuongeza idadi ya watu ramani sasa kwamba user ina wakiongozwa screen ili kuona 10 pengine mpya markers kwa miji tofauti. Wakati huo huo, faili hii ni hatimaye kwenda nitafanya SQL query dhidi ya database yetu meza inaitwa maeneo ambayo ni kwenda na kurudi wale Maeneo 10 au wachache. Wakati huo huo, katika articles.php, ni mtu mwingine faili tumekuwa imeandikwa katika ukamilifu wake. Ni sawa sana katika roho kwa Set Tatizo 7 ya Luke kazi, ambayo aliwasiliana Yahoo Fedha kwa ajili yenu. Hii mawasiliano ya faili Google News kwa ajili yenu, hatimaye grabbing mashine-someka version-- katika kitu kuitwa RSS format-- wa habari kwa Cambridge au Beverly Hills au chochote mji ulichokitafutiza kwa misingi ya kwamba geoparameter. Sisi Hazrat kwamba RSS, ambayo ni tu aina ya ghafi lugha inayoitwa XML, na kisha sisi kweli kurudi kwa browser yako na JavaScript code yako, hasa, katika muundo kuitwa JSON, JavaScript Object Notation. Sasa utaona katika specification-- sisi kumweka wewe jinsi gani unaweza kweli kuona baadhi ya kuja JSON back-- kwamba utendaji huu hatimaye inakuwezesha idadi ya menus wale popup hivyo kwamba wakati wewe click juu ya marker katika ramani wewe kweli kuona rundo zima ya risasi, ambayo kila mmoja viungo kwa makala. Sasa hebu tuangalie moja iliyopita PHP faili ambayo, kwa bahati nzuri, hana kuwa na kiasi kwenda on-- tu TODO pretty kubwa. Hivi sasa faili hili anatangaza safu kuitwa maeneo. Na kisha hatimaye prints kwamba safu katika JSON format-- pretty-uchapishaji tu hivyo kwamba mambo ni rahisi Debug. Kwa bahati mbaya, katika katikati kuna TODO hii, ambayo inatoa wito kwa wewe kutafuta database kwa maeneo vinavyolingana geo HTTP parameter. Na kwa kweli, hii ni kwenda kuwa moja ya challenges-- yako kutekeleza utendaji huu hapa hivyo kwamba wakati wewe wasiliana faili hili na URL kama search. php? geo = jambo fulani, code yako hatimaye kurudi JSON safu ya maeneo yote katika yako database meza wanaofanana pembejeo kwamba. Hivyo kama aina ya mtumiaji katika Cambridge, faili yako hapa search.php lazima hatimaye kurudi JSON safu kwa wote wa mechi kwa Cambridge, ambayo inaweza kuwa katika Massachusetts lakini inaweza hata kuwa mahali popote. Mwisho, hebu tuangalie mbili files kwamba ni tuli ultimately-- CSS yako faili na faili yako JavaScript. Kama mimi kwenda katika CSS directory yetu, kuna rundo zima la files huko, lakini wengi wao ni maktaba. Mimi nina kwenda kuangalia, hasa, katika styles.css, ambayo ni ya kimataifa yetu wenyewe CSS kwamba kwenda stylize mashup hili lote. Mimi itabidi kuondoka ni wewe kusoma kwa njia comments humu, lakini kwa kifupi, hii ni CSS ili kuhakikisha kwamba yetu mashup, by default nje ya boksi, inaonekana hasa kwa njia tunataka ubaya wake na ramani kujaza maoni bandari na search sanduku up juu kushoto. Tumekuwa pia kuchukuliwa uhuru wa stylizing kwamba typeahead dropdown orodha kidogo pia. faili muhimu zaidi labda kwa tatizo hili kuweka hii ni moja ya mwisho, scripts.js. Ndani ya JS saraka yako ni files hata zaidi. Wote ni files maktaba isipokuwa kwa hii moja, scripts.js. Kama sisi kufungua hili, hebu kuchukua yetu ziara ya mwisho kwa njia kazi ambayo ni kujengwa katika faili hii kwa ajili yenu na wito makini kwa todos kwamba uongo mbele. Saa ya juu ya faili hili, ni vigezo tatu kimataifa. Moja kwa ramani, ambayo ni kwenda kuwa rejea kwa ramani yetu Google. Unaweza kufikiria ni aina ya kama pointer. Wakati huo huo, tuna variable mwingine kimataifa kuitwa info, ambayo inaonekana kuwa kuhifadhi thamani ya kurudi wito kwa google.maps.InfoWindow mpya. JavaScript inasaidia vitu ambayo ni sawa sana katika roho kwa Struts. Na nini mstari huu kwa madhumuni yetu ni kufanya ni kujenga info mpya dirisha katika kumbukumbu na kisha kuweka kuzunguka kumbukumbu dharura katika variable kuitwa Info. Na katika kati ya hizo, wakati huo huo, ni nini inaonekana kuwa tupu JavaScript safu kuitwa markers. Wote wa icons gazeti hayo, au wewe wanaweza kuchagua icon nyingine kabisa, ni kwenda kuhifadhiwa hatimaye katika safu hii ili tuweze urahisi sana kuongeza ramani na kuondoa yao kutoka ramani. Sasa hebu kitabu chini kidogo na whiz kupitia kificho kwamba kinaendelea kuwa kunyongwa kwa haraka kama DOM au hati kitu mfano au ukurasa yenyewe ni tayari. Kumbuka kwamba syntax hii hapa tu bayana kwamba kanuni zifuatazo lazima ifanyike tu wakati browser ina kumaliza kupakia kila kitu kingine. Sisi kwanza kutangaza rundo zima la mitindo, ambayo kuishia stylizing ramani kama kwa spec. Sisi basi kutangaza rundo zima la chaguzi, ambayo zaidi Customize Google ramani kwamba sisi ni juu ya embed. Sisi kisha kutumia kidogo ya jQuery code, ambayo ni alielezea kwa undani kidogo zaidi katika spec, kunyakua kwamba kipengele, ramani canvas kwamba sisi hivyo kipekee kutambuliwa. Na kisha line hii hapa ni kile inaonekana magically kutupa Google ramani ndani ya maombi yetu wenyewe, kuhifadhi kumbukumbu dharura kwa kuwa variable kuitwa ramani. Hatimaye, chini hapa sisi kujiandikisha kile kinachoitwa msikilizaji. Fikiria back-- njia, back-- kwa wiki sifuri katika CS50 wakati sisi inaonekana katika Scratch na msaada wake kwa njia ya kutembea kupitia kwa mambo kuitwa matukio na matangazo. Unaweza kuwa na kutumika hivyo mwenyewe, lakini ni njia ambazo browser katika kesi hii Unaweza kupata mawazo yetu wakati ni tayari kweli nitafanya baadhi ya kanuni. Katika kesi hiyo, ni kwenda kusikiliza ramani ya kwa ajili ya tukio kuitwa wavivu. Hii ina maana kwamba browser ina kumaliza kupakia ramani Google. Katika hatua hii kazi kuitwa configure lazima hatimaye lazima ifanyike. Kazi hiyo, configure, tutaweza kuona, imeandikwa na sisi. Sasa hapa chini ni kazi kwamba, kwa bahati mbaya, ni tu marker TODO kuongeza. Per spec. wewe ni kwenda haja kuandika kificho kwamba kweli anaongeza marker-- kama inaonekana kama gazeti, au tack thumb, au kitu else-- kwa ramani Google. Hapa sasa ni kazi ambayo kuitwa configure. Mimi itabidi kuondoka ni wewe kusoma kwa njia hii kwa undani zaidi, lakini kutambua kwamba sisi kuongeza Wasikilizaji rundo zaidi ili tuweze kutekeleza kanuni wakati user Clicks juu na drags ramani. Sisi pia kuwa kanuni katika hapa kwamba initializes kwamba typeahead Plugin ili dropdown orodha kweli kazi. Lakini hebu kuzingatia tu michache ya maeneo humu. Hasa, hii kufanya hapa. Mimi itabidi kuahirisha kwa online nyaraka na vipimo kwa jinsi ya kujaza TODO hii. Lakini kwa kifupi, maktaba hii typeahead utapata kupita katika nini ujumla inayojulikana kama template, ambayo ina baadhi ya placeholders variable sawa sana katika roho kwa% printf ya. * s. Lakini katika kesi hii, template kwa spec utapata bayana nini vigezo unataka kuingiza kutoka data hiyo kuja nyuma kutoka kitu kama PHP files kwamba umefanya imeandikwa kuwa ni kutotoa moshi JSON pato. Sasa hapa chini kutambua kwamba sisi ni kusikiliza kwa typeahead uchaguzi wakati mtumiaji kweli inafanya a kutafuta na kuchagua thamani. Hii ni jinsi sisi ni kweli kwenda kusikiliza kwa kuwa na kutekeleza baadhi ya kanuni kama matokeo. Kisha sisi kuendelea configure mashup kidogo tu. Na, hatimaye, sisi wito hii update kazi. Ni updates markers katika screen. Zaidi juu ya kwamba katika muda tu. Wakati huo huo, kuna wachache kazi ndogo katika hapa. Moja ambayo ni hideInfo ambayo tu kufunga InfoWindow. Kazi nyingine hapa, ambayo hatimaye itakuwa si muda mrefu sana, kuondoa alama. Hiyo inaenda kutengua chochote nyongeza zako marker kazi gani. Na kisha chini hapa ni search. Na hii ni moja ya kuvutia kwa sababu sisi wameandika JavaScript kificho kwamba ni kwenda kuzungumza na search.php juu ya server na kupata nyuma baadhi ya majibu. Wewe, bila shaka, mapenzi bado haja ya kutekeleza search.php, lakini tumekuwa kutekelezwa JavaScript kificho kwamba ni kwenda kushughulikia kweli kufanya utafutaji na kwamba sanduku maandishi. Hasa, ilani kwamba kazi hii hapa, search, haina wito search.php kwa njia kuitwa kupata JSON, ambayo tuliona katika hotuba. Na syntax hapa ni tofauti kidogo kutoka hotuba katika kwamba sisi ni kutumia jQuery kinachojulikana ahadi interface. Zaidi juu ya kwamba katika spec. Hii ina maana tu kwa ajili yetu madhumuni sasa kwamba kuna ni majukumu mawili maalum sisi haja ya simu na dot nukuu hapa mara baada ya wito kupata JSON. Moja inaitwa done. Moja inaitwa kushindwa. Unaweza kufikiria haya kama mafanikio handler na kushindwa handler tu katika kesi kitu kitaenda vibaya. Sasa hebu tuangalie mwisho michache ya kazi katika faili hii. Chini hapa ni kazi kuitwa showInfo, ambayo inaonyesha info katika moja ya wale kidogo info madirisha kwamba pops up wakati mtumiaji Clicks marker. Chini hapa zaidi ni kuwa kazi update kwamba tuna kutekelezwa kwa ajili yenu. Ni huamua mipaka ya ramani. Ni kuratibu GPS ya nini yake kaskazini na kusini magharibi pembe hapa. Tumekuwa tayari baadhi ya vigezo HDP hapa na kisha kupita yao hatimaye kwa update.php, ambayo tumekuwa pia kutekelezwa kwa ajili yenu. Hiyo hatimaye anapata nyuma baadhi JSON kutoka faili inayoitwa update.php na kisha kuondosha yoyote markers katika screen na kisha iterates juu ya data hiyo kurudi kutoka update.php, ambayo tena ni tu JSON safu. Na kisha hatimaye anaongeza marker kwa kila moja ya maeneo hayo, utunzaji kushindwa au makosa ambayo huenda vizuri sana kutokea. Sasa tu kukupa ladha ya jinsi wanaweza kwenda juu debugging mradi huu, kutambua kwamba nilipofungua katika kuendeleza tab hii hapa URL hii, pset8 / articles.php? geo = 02138. Sasa, tena, makala kuhusu PHP sisi kutekelezwa kwa ajili yenu hivyo hii si sana nini wewe utakuwa na kutumia kwa Debug, lakini badala ya mbinu. Taarifa kwamba mimi ulichokitafutiza Cambridge ya zip code hapa, na nimekuwa wamezipata nyuma, kwa kweli, JSON safu ya JSON vitu ndani ya ambayo ni mbili keys-- kiungo na cheo. Hivyo utendaji huu kazi tayari kwa ajili yenu. Lakini mbinu hii ya manually kwenda URL kama hii kwa kitu kama search.php? geo = cambridge au 02138 au chochote user ina typed katika lazima kuthibitisha mchango mkubwa sana kama wewe mwenyewe, jaribu kufikiri hasa kama au nini search.php ni kazi au la. Hatimaye basi, una todos chache mbele yenu. Wewe ni kwenda zana kwanza kwamba kuagiza script kwamba anasoma katika us.text katika database yako. Wewe ni basi kwenda haja kutekeleza search.php ili kutenda hasa kama maalum. Wewe ni basi atataka kuzingatia scripts.js na hatimaye kutekeleza wale michache todos, ikiwa ni pamoja na configure na kwamba template, kuongeza markers, kuondoa markers, na kisha mwisho, lakini si uchache, moja kugusa binafsi. Mara una mashup yako ya kazi kabisa kama yetu, lengo katika mkono ni kwa ajili yenu kuongeza binafsi kugusa na mashup yako, kama ni aesthetic au kazi. Kuchukua mashup milele hivyo kidogo kwa ngazi ya pili. Muda mrefu kama wewe kushinikiza mwenyewe zaidi uzoefu wako na spec yenyewe na kuchukua moja ya mbinu mpya, hata kama ni tu kitu aesthetic kama kubadilisha mpangilio wa ramani kwamba unatumia, wigo kwamba tunatarajia utakuwa kuridhika. Hiyo basi ni Tatizo Set 8 Mashup. Stay tuned kwa zaidi katika vipimo na bora wa bahati kukabiliana na hii, yako ya mwisho CS50 tatizo kuweka milele. [MUSIC kucheza]