1 00:00:00,000 --> 00:00:00,988 2 00:00:00,988 --> 00:00:09,880 >> [音楽再生] 3 00:00:09,880 --> 00:00:13,360 >> スピーカ1:さて、ここで我々は、 CS50での最後のPセット。 4 00:00:13,360 --> 00:00:17,040 持っていることから自分自身を祝福 ここまで来て以来、最初のこんにちは 5 00:00:17,040 --> 00:00:20,090 世界とプリントアウト マリオのためのピラミッド。 6 00:00:20,090 --> 00:00:21,930 あなたは先週、ウェブサイトを作りました。 7 00:00:21,930 --> 00:00:25,110 そして、我々は別のものを作ることになるだろう 今週、あなたがすることを可能にする1 8 00:00:25,110 --> 00:00:28,570 ピッキング、ハーバード大学のキャンパスをドライブ CS50スタッフをバックアップし、 9 00:00:28,570 --> 00:00:31,910 戻って自分のためにそれらを持って来る 住宅。 10 00:00:31,910 --> 00:00:35,400 >> 今、先週、我々は、PHPで働いていた サーバー側の言語。 11 00:00:35,400 --> 00:00:38,250 このPセットのために、我々は導入取得している されるJavaScriptに 12 00:00:38,250 --> 00:00:40,600 クライアント側の言語。 13 00:00:40,600 --> 00:00:44,010 それでは、いくつか見てみましょう に提供の流通コード 14 00:00:44,010 --> 00:00:46,210 このP·セットの使用。 15 00:00:46,210 --> 00:00:49,700 >> JavaScriptのフォルダに、そこに意志 JavaScriptファイルの束であること。 16 00:00:49,700 --> 00:00:53,600 含まれていますbuildings.jsがあります ハーバード大学の周りの建物の配列 17 00:00:53,600 --> 00:00:57,340 自分の情報を使用したキャンパス、 と位置。 18 00:00:57,340 --> 00:01:01,630 Houses.jsはハーバードの配列です 住宅、との 19 00:01:01,630 --> 00:01:04,030 緯度と経度。 20 00:01:04,030 --> 00:01:07,020 Passengers.jsは含まれています 乗客の配列 - 21 00:01:07,020 --> 00:01:08,600 CS50スタッフ - 22 00:01:08,600 --> 00:01:11,640 あなたがに持ち帰ることだろうと 彼らの住宅。 23 00:01:11,640 --> 00:01:16,450 >> を多く含むMath3D.js、 運動とは何の機能。 24 00:01:16,450 --> 00:01:19,500 あなたは数学的に志向している場合は、 私はあなたが見てみましょ歓迎。 25 00:01:19,500 --> 00:01:23,530 しかし、あなたが理解する必要はありません そこにすべてのもの。 26 00:01:23,530 --> 00:01:26,710 扱うShuttle.js、 シャトルの動き。 27 00:01:26,710 --> 00:01:31,450 とindex.htmlのホームページです すべては、本当に、どうなる場所 28 00:01:31,450 --> 00:01:33,610 ユーザーがサイトと対話している。 29 00:01:33,610 --> 00:01:39,110 >> Service.cssは、CSSスタイルシートで、 Twitterのに加えている、 30 00:01:39,110 --> 00:01:43,960 ブートストラップライブラリ、コントロール どのようにindex.htmlに見える。 31 00:01:43,960 --> 00:01:48,190 そして、我々はまた、service.jsを持っている のためのサービス機能が含まれています 32 00:01:48,190 --> 00:01:49,010 シャトル。 33 00:01:49,010 --> 00:01:53,010 あなたがあることを行っている場所とここにある DOSのいくつかを記入。 34 00:01:53,010 --> 00:01:56,600 >> それでは、オブジェクトを見てみましょうと、 JavaScriptで連想配列、 35 00:01:56,600 --> 00:01:59,360 すべての意図や目的のためにどの 交換可能です。 36 00:01:59,360 --> 00:02:03,030 私は、オブジェクト変数作りたい場合 私は、杖になると呼ばれる 37 00:02:03,030 --> 00:02:04,290 それを宣言します。 38 00:02:04,290 --> 00:02:08,789 そして、私ははずの中括弧内 コアがユニコーンで指定します。 39 00:02:08,789 --> 00:02:10,220 木材はチェリーです。 40 00:02:10,220 --> 00:02:12,710 、長さは13です。 41 00:02:12,710 --> 00:02:16,370 >> 今、私はまた、値にアクセスすることができます 使用してオブジェクトの 42 00:02:16,370 --> 00:02:18,270 連想配列表記法。 43 00:02:18,270 --> 00:02:22,610 私が設定することもできますので、杖屈折率コア、 ユニコーンに等しいこと、または 44 00:02:22,610 --> 00:02:24,710 私が必要な場合は、次のことを確認してください。 45 00:02:24,710 --> 00:02:26,510 または私はドット演算子を使用することができます。 46 00:02:26,510 --> 00:02:30,280 ワンドドット木材は、チェリーに等しい 等などが挙げられる。 47 00:02:30,280 --> 00:02:33,930 だから、連想配列が分かりや JavaScriptでのオブジェクトがあることを行っている 48 00:02:33,930 --> 00:02:37,720 交換可能、とウィル かなり便利になる。 49 00:02:37,720 --> 00:02:41,570 >> その後、我々は建物の配列を参照してください。 buildings.js中。 50 00:02:41,570 --> 00:02:43,870 この場合も、オブジェクトの配列。 51 00:02:43,870 --> 00:02:48,500 私は最高の配列を作りたい場合 その後、ハーバード大学キャンパスの建物、 52 00:02:48,500 --> 00:02:49,710 次のように私はそれを作るだろう。 53 00:02:49,710 --> 00:02:55,250 このオブジェクトの表記法を使用して、どこで 私は根、名前、住所を格納し、 54 00:02:55,250 --> 00:03:00,260 すべての緯度、および経度 つの建物オブジェクト。 55 00:03:00,260 --> 00:03:02,930 >> のはすぐに変数についてお話しましょう JavaScriptで。 56 00:03:02,930 --> 00:03:07,760 PHP、JavaScriptの変数のように 弱いまたは緩く型付けされています。 57 00:03:07,760 --> 00:03:14,120 ローカル変数を作成するには、接頭辞 V-A-R、VAR変数名。 58 00:03:14,120 --> 00:03:17,010 >> 今JavaScriptでは、関数は、意志 変数の範囲を制限する。 59 00:03:17,010 --> 00:03:20,600 だから、内のローカル変数を持っている場合 機能は、他の機能 60 00:03:20,600 --> 00:03:22,060 それにアクセスすることはできません。 61 00:03:22,060 --> 00:03:26,090 しかし、Cとは異なり、ループや条件にはありません 変数の範囲を制限する。 62 00:03:26,090 --> 00:03:30,600 >> だから、Aの内部でそれを宣言する場合でも、 条件、関数全体の意志 63 00:03:30,600 --> 00:03:32,810 それにアクセスすることができます。 64 00:03:32,810 --> 00:03:35,820 今VARなしで、変数 グローバルになります。 65 00:03:35,820 --> 00:03:39,170 あなただけの名前を宣言し、もしそうであれば 値を割り当て、その変数 66 00:03:39,170 --> 00:03:41,900 グローバル変数になります JavaScriptで。 67 00:03:41,900 --> 00:03:48,480 >> 今の家では、我々は連想を持っている 家のTypeオブジェクトの配列。ここで、 68 00:03:48,480 --> 00:03:52,100 すべての家はちょうど緯度 と経度。 69 00:03:52,100 --> 00:03:55,140 その後、我々は乗客を持っている 配列になって、 70 00:03:55,140 --> 00:03:57,370 オブジェクト型の乗客の。 71 00:03:57,370 --> 00:04:01,620 したがって、すべての乗客には、ユーザ名を持っている、 名、および家。 72 00:04:01,620 --> 00:04:04,840 私はタイプで見ていることに注意してください 実際には意味の乗客、 73 00:04:04,840 --> 00:04:08,150 すべてのオブジェクトが持っていることを 同じキーと値のペア。 74 00:04:08,150 --> 00:04:12,830 そうタイプの乗用車のすべてのオブジェクトがあります ユーザー名、名前、および家。 75 00:04:12,830 --> 00:04:14,850 >> だから我々はには何が必要なのですか Pセットのために何が? 76 00:04:14,850 --> 00:04:20,779 まあ、我々は、ユーザーが選択できるようにする必要があります スタッフメンバーまで、すべてを表示するには 77 00:04:20,779 --> 00:04:25,090 に現在あるスタッフメンバー 私たちのシャトルバス、それらをオフにドロップします。 78 00:04:25,090 --> 00:04:29,280 そして、我々はまた、余分な話をします のために実装できる機能 79 00:04:29,280 --> 00:04:30,980 シャトルPセット。 80 00:04:30,980 --> 00:04:33,610 >> しかし、ここでは最初のピックアップについてお話ししましょう​​。 81 00:04:33,610 --> 00:04:37,480 CS50スタッフの顔があった ここで、それぞれ、すべてのキャンパスの上に植え 82 00:04:37,480 --> 00:04:41,750 顔が場所マークとして実装されています 3D地球上などの 83 00:04:41,750 --> 00:04:44,030 2Dマップ上のマーカー。 84 00:04:44,030 --> 00:04:47,880 ユーザがピックアップをクリックしたとき ボタン、我々は、近く追加する 85 00:04:47,880 --> 00:04:49,590 シャトルバスの乗客。 86 00:04:49,590 --> 00:04:53,650 そして、我々はまた、その場所を削除したい 世界からマークし、削除し、その 87 00:04:53,650 --> 00:04:58,060 それを示すマップからのマーカー、 彼らは今、私たちのシャトルにいる。 88 00:04:58,060 --> 00:05:02,520 >> では、どのように検出しないかの乗客 私たちのシャトルの範囲内にある? 89 00:05:02,520 --> 00:05:04,610 さて、関数の距離 - 90 00:05:04,610 --> 00:05:08,770 そのシャトルドット距離を渡す 緯度と経度、意志 91 00:05:08,770 --> 00:05:12,030 現在までの距離を計算する へのシャトルの位置 92 00:05:12,030 --> 00:05:15,850 あなたはそれと指定するポイント 緯度と経度を与えられた。 93 00:05:15,850 --> 00:05:19,180 だから、計算するためにこれを使用することができます へのシャトルからの距離 94 00:05:19,180 --> 00:05:20,310 乗客。 95 00:05:20,310 --> 00:05:24,040 >> しかし、どのようにどこで知っていますか 乗客は何ですか? 96 00:05:24,040 --> 00:05:27,510 我々はする必要がありますどこでまあ、それはだ 移入機能を編集します。 97 00:05:27,510 --> 00:05:32,500 場所のスタッフのすべてを取り込む 世界へと乗客、 98 00:05:32,500 --> 00:05:36,300 そしてマップにしませんが、 その場所に保管します。 99 00:05:36,300 --> 00:05:39,850 だから、おそらくあなたは自分を保存することができます マークやマーカーを配置 100 00:05:39,850 --> 00:05:41,570 いくつかのグローバル配列内の。 101 00:05:41,570 --> 00:05:45,780 >> 今すでにグローバル配列があります 乗客からの情報を記憶する。 102 00:05:45,780 --> 00:05:49,960 乗客·アレイには、各 乗客の名前と彼らの家。 103 00:05:49,960 --> 00:05:54,985 だから、多分あなたは、いくつかのパラメータを追加することができます そこに乗客のオブジェクトに。 104 00:05:54,985 --> 00:05:59,290 >> 私たちはすべての乗客の検出に役立つ 私たちのシャトルの範囲内で、みましょう 105 00:05:59,290 --> 00:06:02,500 乗客のすべてをループ 乗客配列内。 106 00:06:02,500 --> 00:06:07,790 JavaScriptでループが見えるかもしれません と非常に似て、このようなもの、 107 00:06:07,790 --> 00:06:12,910 Cのforループのものあるいは我々が使用することができます ループ構造のための代替。 108 00:06:12,910 --> 00:06:17,130 >> VARのための私は、配列内の、どこ まだインデックスされま​​す。 109 00:06:17,130 --> 00:06:20,740 しかし、あなたは指定する必要はありません ドットアレイの長さ 110 00:06:20,740 --> 00:06:23,310 条件、およびIプラスプラス。 111 00:06:23,310 --> 00:06:26,140 すべての乗客の場所にあります。 その場所のマークが与えられ。 112 00:06:26,140 --> 00:06:29,800 >> しかし、場所のマークがありません 緯度と経度。 113 00:06:29,800 --> 00:06:34,575 我々は、で、これらのパラメータにアクセスする必要が GETを使用して、ジオメトリを取得 114 00:06:34,575 --> 00:06:35,900 場所マークをジオメトリ。 115 00:06:35,900 --> 00:06:39,630 そして、我々は、ジオメトリを作成したら 緯度またはいずれかを取得 116 00:06:39,630 --> 00:06:42,600 経度、これらの機能を使用して。 117 00:06:42,600 --> 00:06:45,680 >> だから今我々は、かどうかを検出する方法を知っている 乗客は内にある 118 00:06:45,680 --> 00:06:47,920 私たちのシャトルの範囲。 119 00:06:47,920 --> 00:06:52,050 我々は、これらの乗客を取得したら、我々はよ ているすべての乗客を追加する 120 00:06:52,050 --> 00:06:53,140 その範囲内。 121 00:06:53,140 --> 00:06:57,580 我々は彼らにホップするようにしたい、と 私たちのシャトルバスで席を取るだけ 122 00:06:57,580 --> 00:06:59,640 我々は彼らのために十分なスペースがある場合。 123 00:06:59,640 --> 00:07:04,120 >> シャトルドット座席配列ます 席が空であるかどうかを示すか、 124 00:07:04,120 --> 00:07:05,890 誰がその席にあります。 125 00:07:05,890 --> 00:07:11,170 そう座席が、その後、空の場合 その座席はnullになります。 126 00:07:11,170 --> 00:07:15,930 そのため、座席の配列を反復 収納、空席の確認 127 00:07:15,930 --> 00:07:20,020 するまで、それらの席に乗客 これ以上空席がありません。 128 00:07:20,020 --> 00:07:23,330 残念ながら、他の乗客 を待つ必要があります 129 00:07:23,330 --> 00:07:26,000 次回シャトルが来る。 130 00:07:26,000 --> 00:07:30,280 >> 彼らは、シャトルに乗ると、私たちはお勧めします その場所のマークを削除するには、どの 131 00:07:30,280 --> 00:07:32,540 3Dの世界での写真です。 132 00:07:32,540 --> 00:07:38,030 私はその場所のマークPを削除したい場合は、 私はすべての機能になるだろう 133 00:07:38,030 --> 00:07:42,790 私の地球から、グーグルアースから、 して、その特定の場所を削除 134 00:07:42,790 --> 00:07:45,910 removeChildの機能を使用してマークします。 135 00:07:45,910 --> 00:07:51,360 そして、最後に、のは、マーカーを削除しましょう​​、 任意のための2Dマップ上のアイコン 136 00:07:51,360 --> 00:07:53,650 私たちが拾っている乗客。 137 00:07:53,650 --> 00:07:59,790 マーカー、Mを削除するには、私はよ ただMドットのsetmapヌルを実行します。 138 00:07:59,790 --> 00:08:02,920 範囲内の任意の乗客のためにこれを行う、 あなたはピックアップを終えた。 139 00:08:02,920 --> 00:08:05,056