Perancangan Aplikasi Pencarian Rute Tependek Dengan Metode Floyd Pada Taksi

  

Lampiran

Kode Program

  1. Fw_jemput_penumpang.php <?php include 'fw.php'; $nama_titik_yang_diklik = "titik_klik"; @$nilai_koordinat_semua_titik = $_POST['nilai_koordinat_semua_titik']; $nilai_koordinat_semua_titik = json_decode("$nilai_koordinat_semua_titik", true); @$nilai_koordinat_mobil_sekarang = $_POST['nilai_koordinat_mobil_sekarang']; $nilai_koordinat_mobil_sekarang = json_decode("$nilai_koordinat_mobil_sekarang", true); //tambahkan kedalam nilai koordinat semua titik //buat id mobil for ($i = 0; $i < count($nilai_koordinat_mobil_sekarang); $i++) { $nilai_koordinat_semua_titik["M$i"] = $nilai_koordinat_mobil_sekarang[$i]; $id_mobil[$i] = "M$i"; } @$nilai_koordinat_path_yang_di_klik = $_POST['nilai_koordinat_path_yang_di_klik']; $nilai_koordinat_path_yang_di_klik = json_decode("$nilai_koordinat_path_yang_di_klik", true); //masukkan koordinat yang di klik ke dalam semua koordinat agar dikenali $nilai_koordinat_semua_titik[$nama_titik_yang_diklik] = $nilai_koordinat_path_yang_di_klik; @$nama_koordinat_samping_yang_diklik = $_POST['nama_koordinat_samping_yang_diklik']; $nama_koordinat_samping_yang_diklik = json_decode("$nama_koordinat_samping_yang_diklik", true); @$koordinat_semua_path = $_POST['koordinat_semua_path']; $koordinat_semua_path = json_decode("$koordinat_semua_path", true); @$nama_koordinat_samping_mobil = $_POST['nama_koordinat_samping_mobil']; $nama_koordinat_samping_mobil = json_decode("$nama_koordinat_samping_mobil", true); for ($i = 0; $i < count($nilai_koordinat_mobil_sekarang); $i++) { $koordinat_semua_path[] = Array($nama_koordinat_samping_mobil[$i][0], $id_mobil[$i]); $koordinat_semua_path[] = Array($id_mobil[$i], $nama_koordinat_samping_mobil[$i][0]); $koordinat_semua_path[] = Array($nama_koordinat_samping_mobil[$i][1], $id_mobil[$i]); $koordinat_semua_path[] = Array($id_mobil[$i], $nama_koordinat_samping_mobil[$i][1]); } $koordinat_semua_path[] = Array($nama_koordinat_samping_yang_diklik[0], $nama_titik_yang_diklik); $koordinat_semua_path[] = Array($nama_titik_yang_diklik, $nama_koordinat_samping_yang_diklik[0]); $koordinat_semua_path[] = Array($nama_koordinat_samping_yang_diklik[1], $nama_titik_yang_diklik); $koordinat_semua_path[] = Array($nama_titik_yang_diklik, $nama_koordinat_samping_yang_diklik[1]); foreach ($koordinat_semua_path as $path => $titik_path) { $x_asal = $nilai_koordinat_semua_titik[$titik_path[0]][0]; $y_asal = $nilai_koordinat_semua_titik[$titik_path[0]][1]; $x_tujuan = $nilai_koordinat_semua_titik[$titik_path[1]][0]; $y_tujuan = $nilai_koordinat_semua_titik[$titik_path[1]][1]; $jarak_path[] = round(sqrt(pow(($x_asal - $x_tujuan), 2) + pow(($y_asal - $y_tujuan), 2))); } foreach ($nilai_koordinat_semua_titik as $key => $value) { $key_nilai_koordinat_semua_titik [] = $key; } //bentuk matrix for ($i = 0; $i < count($nilai_koordinat_semua_titik); $i++) { for ($j = 0; $j < count($nilai_koordinat_semua_titik); $j++) { for ($k = 0; $k < count($koordinat_semua_path); $k++) { if ($key_nilai_koordinat_semua_titik[$i] == $koordinat_semua_path[$k][0] && $key_nilai_koordinat_semua_titik[$j] == $koordinat_semua_path[$k][1]) { $matrix_path[$i][$j] = $jarak_path[$k]; break; } else { $matrix_path[$i][$j] = 0; } } }

  } //$hasil[] = $matrix_path; $path_terpendek = Array(); $fw = new Floyd($matrix_path, $key_nilai_koordinat_semua_titik); //mendapatkan posisi path mobil; $counter = 0; foreach ($nilai_koordinat_semua_titik as $key => $value) { for ($i = 0; $i < count($nilai_koordinat_mobil_sekarang); $i++) { if ($id_mobil[$i] == $key) { $index_mobil[] = $counter; } } $counter++; } //cari path tedekat dengan membandingkan semua mobil for ($i = 0; $i < count($index_mobil); $i++) { // @$path_terpendek[] = $fw->get_path($index_mobil[$i], count($key_nilai_koordinat_semua_titik) - 1); @$jarak[$i] = $fw->jarak_terpendek($index_mobil[$i], count($key_nilai_koordinat_semua_titik) - 1); } //ambil mobil yang memiliki jarak paling dekat dengan penumpang $id_mobil_terdekat = array_search(min($jarak), $jarak); //ambil nama mobil, kemudian bandingkan di semua path agar mobil yang terdekat diketahui titiknya $nama_mobil = $id_mobil[$id_mobil_terdekat]; $i = 0; foreach ($nilai_koordinat_semua_titik as $key => $value) { if ($key == $nama_mobil) { $id_lokasi_mobil_terdekat = $i; break; } $i++; } //setelah mobil yang terdekat diperoleh, temukan ambil path yang dilalui oleh mobil paling dekat @$path_terpendek = $fw->get_path($id_lokasi_mobil_terdekat, count($key_nilai_koordinat_semua_titik) - 1); //untuk cek apakah looping pertama atau tidak untuk membuat M atau L $status_posisi = 0;

  // buat path dengan ketentuan jalur terpendek foreach ($path_terpendek as $i) { if ($status_posisi == 0) { $ambil_koordinat = "M" . $nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][0] . " " . $nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][1]; $status_posisi++; } else { $ambil_koordinat = "L" . $nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][0] . " " . $nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][1]; } @$path_akhir = $path_akhir . $ambil_koordinat; $nama_titik_yang_dilalui_terpendek[] = $key_nilai_koordinat_semua_titik[$i]; } $hasil[] = $id_mobil_terdekat; $hasil[] = $jarak[$id_mobil_terdekat]; $hasil[] = $path_akhir; $hasil[] = $nama_titik_yang_dilalui_terpendek; $hasil[] = $jarak[$id_mobil_terdekat]; $hasil[] = $matrix_path; echo json_encode(@$hasil); ?>

  2. Fw.php <?php define('INFINITE', pow(2, (20 * 8 - 2) - 1)); class Floyd { var $panjang_path = array(array()); var $inisialisasi_path = array(array()); var $path; var $jumlah_path; var $nama_titik; var $temp = array(); function Floyd($matrix_path, $nama_titik='') { $this->path = $matrix_path; $this->jumlah_path = count($this->path); if (!empty($nama_titik) && $this->jumlah_path == count($nama_titik)) { $this->nama_titik = $nama_titik; }

  $this->__floydwarshall(); // echo $this->jumlah_path . "sss"; } function __floydwarshall() { // Initialization for ($i = 0; $i < $this->jumlah_path; $i++) { for ($j = 0; $j < $this->jumlah_path; $j++) { if ($i == $j) { $this->panjang_path[$i][$j] = 0; } else if ($this->path[$i][$j] > 0) { $this->panjang_path[$i][$j] = $this->path[$i][$j]; } else { $this->panjang_path[$i][$j] = INFINITE; } $this->inisialisasi_path[$i][$j] = $i; } } // Algorithm for ($k = 0; $k < $this->jumlah_path; $k++) { for ($i = 0; $i < $this->jumlah_path; $i++) { for ($j = 0; $j < $this->jumlah_path; $j++) { if ($this->panjang_path[$i][$j] > ($this->panjang_path[$i][$k] + $this- >panjang_path[$k][$j])) { $this->panjang_path[$i][$j] = $this->panjang_path[$i][$k] + $this- >panjang_path[$k][$j]; $this->inisialisasi_path[$i][$j] = $this->inisialisasi_path[$k][$j]; } } } } } function __get_path($i, $j) { $this->temp = Array(); if ($i != $j) { $this->__get_path($i, $this->inisialisasi_path[$i][$j]); } array_push($this->temp, $j); } function get_path($i, $j) { $this->__get_path($i, $j); return $this->temp;

  } function ambil_path($i, $j) { if ($i != $j) { $this->ambil_path($i, $this->inisialisasi_path[$i][$j]); } if (!empty($this->nama_titik)) { print($this->nama_titik[$j]) . ' '; // $path[] = $this->nama_titik[$j]; } else { print($j) . ' '; } // return $path; } function jarak_terpendek($i, $j) { return $this->panjang_path[$i][$j]; } } ?>

  <?php include 'koneksi.php'; mysql_query("TRUNCATE TABLE lokasi_penumpang"); ?> <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>PTH</title> <script type="text/javascript" src="js/raphael-min.js"></script> <script type="text/javascript" src="js/jquery.js"></script> <link href="css.css" rel="stylesheet" type="text/css" /> </head> <body> <header id="header"> JALUR TERPENDEK DENGAN ALGORITMA FLOYD </header> <?php include 'include/nav.php'; ?> <div id="map">

  <div id="canvas" style="float: left; background-image:url(img/peta.jpg); background-repeat:no-repeat;"></div> <div id="canvas" style="float: right; width:19%;height:500px; border:1px solid black; overflow: scroll"> <label style="text-align: center; color: blue;"><h3>Keterangan</h3></label> <label id="keterangan"></label> </div> <?php /* untuk mengambil semua data yang ada pada database yang akan diparsing ke javascript */ $q_titik = mysql_query("SELECT (SELECT x FROM titik WHERE nama_titik=path.asal)as nilai_asal_x, (SELECT y FROM titik WHERE nama_titik=path.asal)as nilai_asal_y, (SELECT x FROM titik WHERE nama_titik=path.tujuan)as nilai_tujuan_x, (SELECT y FROM titik WHERE nama_titik=path.tujuan)as nilai_tujuan_y, id, asal, tujuan FROM path ORDER BY id ASC") or die(mysql_error()); while ($row = mysql_fetch_array($q_titik)) { @$path[] = "M" . $row['nilai_asal_x'] . " " . $row['nilai_asal_y'] . "L" . $row['nilai_tujuan_x'] . " " . $row['nilai_tujuan_y']; // @$path[] = "M" . $row['nilai_tujuan_x'] . " " . $row['nilai_tujuan_y'] . "L" . $row['nilai_asal_x'] . " " . $row['nilai_asal_y']; //untuk mengetahui path yang @$id_path[] = $row['id']; @$nama_path_asal[] = $row['asal']; @$nama_path_tujuan[] = $row['tujuan']; @$nilai_asal_x[] = $row['nilai_asal_x']; @$nilai_asal_y[] = $row['nilai_asal_y']; @$nilai_tujuan_x[] = $row['nilai_tujuan_x']; @$nilai_tujuan_y[] = $row['nilai_tujuan_y']; @$koordinat_semua_path[] = Array($row['asal'], $row['tujuan']); } $q_titik_macet = mysql_query("SELECT (SELECT x FROM titik WHERE nama_titik=path_macet.asal)as nilai_asal_x_macet, (SELECT y FROM titik WHERE nama_titik=path_macet.asal)as nilai_asal_y_macet, (SELECT x FROM titik WHERE nama_titik=path_macet.tujuan)as nilai_tujuan_x_macet,

  (SELECT y FROM titik WHERE nama_titik=path_macet.tujuan)as nilai_tujuan_y_macet, id, asal, tujuan FROM path_macet ORDER BY id ASC") or die(mysql_error()); while ($row_macet = mysql_fetch_array($q_titik_macet)) { @$path_macet[] = "M" . $row_macet['nilai_asal_x_macet'] . " " . $row_macet['nilai_asal_y_macet'] . "L" . $row_macet['nilai_tujuan_x_macet'] . " " . $row_macet['nilai_tujuan_y_macet']; // @$path[] = "M" . $row['nilai_tujuan_x'] . " " . $row['nilai_tujuan_y'] . "L" . $row['nilai_asal_x'] . " " . $row['nilai_asal_y']; //untuk mengetahui path yang @$id_path_macet[] = $row_macet['id']; @$nama_path_asal_macet[] = $row_macet['asal']; @$nama_path_tujuan_macet[] = $row_macet['tujuan']; @$nilai_asal_x_macet[] = $row_macet['nilai_asal_x_macet']; @$nilai_asal_y_macet[] = $row_macet['nilai_asal_y_macet']; @$nilai_tujuan_x_macet[] = $row_macet['nilai_tujuan_x_macet']; @$nilai_tujuan_y_macet[] = $row_macet['nilai_tujuan_y_macet']; @$koordinat_semua_path_macet[] = Array($row_macet['asal'], $row_macet['tujuan']); } // print_r($koordinat_semua_path); // print_r($nama_path_asal); //print_r($nama_path_asal); //untuk mengambil titik aja agar bisa diambil group berdasarkan nama titik $q_nama_path_asal = mysql_query("SELECT * FROM titik ORDER BY id ASC") or die(mysql_error()); while ($row = mysql_fetch_array($q_nama_path_asal)) { $nama_titik_asal[] = $row['nama_titik']; $nilai_koordinat_semua_titik[$row['nama_titik']] = Array($row['x'], $row['y']); } // print_r($koordinat_xy); // print_r($nama_titik_asal); //group dari masing-masing titik, pada posisi ini semua simpang diambil nilainya pada masing-masing titik for ($i = 0; $i <= count($nilai_koordinat_semua_titik); $i++) { @$q_cabang_titik = mysql_query("SELECT * FROM path WHERE asal='$nama_titik_asal[$i]' ORDER BY id ASC") or die(mysql_error()); while ($row = mysql_fetch_array($q_cabang_titik)) {

  // @${"cabang_titik_$nama_titik_asal[$i]"}[] = $row['id']; //membuat variable dinamis, agar bisa diparsing ke javascript @$cabang_titik[$nama_titik_asal[$i]][] = $row['id']; } } ?> <script type="text/javascript"> var mobil = new Array(); var teks_no_mobil =new Array(); var path_mobil= new Array(); //parsing semua nilai yang sudah dimasukkan ke array di php var path_semua = <?php echo json_encode($path); ?>; var nilai_asal_x= <?php echo json_encode($nilai_asal_x); ?>; var nilai_asal_y= <?php echo json_encode($nilai_asal_y); ?>; var nilai_tujuan_x= <?php echo json_encode($nilai_tujuan_x); ?>; var nilai_tujuan_y= <?php echo json_encode($nilai_tujuan_y); ?>; var nilai_koordinat_semua_titik= <?php echo json_encode($nilai_koordinat_semua_titik); ?>; var koordinat_semua_path= <?php echo json_encode($koordinat_semua_path); ?>; var path_semua_macet = <?php echo json_encode($path_macet); ?>; var nilai_asal_x_macet= <?php echo json_encode($nilai_asal_x_macet); ?>; var nilai_asal_y_macet= <?php echo json_encode($nilai_asal_y_macet); ?>; var nilai_tujuan_x_macet= <?php echo json_encode($nilai_tujuan_x_macet); ?>; var nilai_tujuan_y_macet= <?php echo json_encode($nilai_tujuan_y_macet); ?>; var nilai_koordinat_semua_titik_macet= nilai_koordinat_semua_titik; var koordinat_semua_path_macet= <?php echo json_encode($koordinat_semua_path_macet); ?>; var id_path_semua = <?php echo json_encode($id_path); ?>; var nama_path_asal_semua = <?php echo json_encode($nama_path_asal); ?>; var nama_path_tujuan_semua = <?php echo json_encode($nama_path_tujuan); ?>; // var nama_titik_asal_semua = <?php echo json_encode($nama_titik_asal); ?>; var cabang_titik_semua=<?php echo json_encode($cabang_titik) ?>; // console.log(cabang_titik_semua); var canvas = Raphael("canvas", 1200, 600); // canvas.canvas.style.backgroundColor = 'LIGHTBLUE'; var jumlah_taksi = 3; var path_penumpang = new Array(); var path_penumpang_macet = new Array(); var counter_penumpang = 0; var panjang_path = new Array(); var attr_path_mobil={"stroke": "#000", "stroke-width": "10", opacity:.1}; var attr_path_mobil_macet={"stroke": "RED", "stroke-width": "10",opacity:.2}; var attr_path_mobil_transparan={"stroke-width": "0", opacity:.1}; var attr_path_mobil_terpendek={"stroke": "RED", "stroke-width": "4"}; var attr_teks_no_mobil = {fill: '#ff0000',"font-size": 16}; var attr_warna_mobil = {fill: 'YELLOW'}; var attr_circle_penumpang = {fill: 'GREEN',opacity:.5}; var attr_teks_panjang_path ={"stroke": "BLUE","font-size": 12}; var attr_teks_penumpang ={"stroke": "BLUE","font-size": 12}; var attr_titik={"stroke": "RED","font-size": 14}; var nilai_koordinat_mobil_sekarang = new Array(); var asal_mobil_sekarang_kirim_php = new Array(); var tujuan_mobil_sekarang_kirim_php = new Array(); var nama_koordinat_samping_mobil = new Array(); var circle_penumpang = new Array(); var status_jemput_penumpang = new Array(); var path_jemput_penumpang = new Array(); var mobil_jemput_penumpang= new Array(); var random_index_asal; var mobil_yang_sedang_menjemput_penumpang = new Array(); var counter_penumpang = 0; var keterangan=""; var path_circle_penumpang = new Array(); var jarak_header = 80; window.onload = function() { //jumlah mobil for(var i=0; i<jumlah_taksi; i++){ mobil_jemput_penumpang[i] = -1; mobil_yang_sedang_menjemput_penumpang[i] = -1; //random index path random_index_asal= Math.floor(Math.random()*path_semua.length); console.log(random_index_asal); mobil[i] = canvas.circle(100, 200, 15).attr(attr_warna_mobil); teks_no_mobil[i] = canvas.text(100, 200,"M"+i).attr(attr_teks_no_mobil); path_mobil[i] = canvas.path(path_semua[random_index_asal]).attr(attr_path_mobil_transparan); id_path_yang_sedang_digunakan[i] = id_path_semua[random_index_asal]; asal_sekarang[i] = nama_path_tujuan_semua[random_index_asal];

counter[i] = 0; } // //path sebagain inisialisasi asal, karena variable path yang digunakan untuk animasi //setelah masuk method animasi maka isi path akan berubah2 // for(var i=0; i<jumlah_taksi; i++){ // } //hanya menampilkan garis saja agar tidak kelihatan kosong saat mobil berjalan //garis yang ditampilkan dijadikan path penumpang for(var i=0; i<path_semua.length;i++){ path_penumpang[i] = canvas.path(path_semua[i]).attr(attr_path_mobil); //buat id masing-masing path path_penumpang[i].data("id",id_path_semua[i]); // hitung_panjang_path(); var x_tengah = (eval(nilai_asal_x[i]) + eval(nilai_tujuan_x[i]))/eval(2); var y_tengah = (eval(nilai_asal_y[i]) + eval(nilai_tujuan_y[i]))/eval(2); panjang_path[i] = Math.sqrt(Math.pow((nilai_asal_x[i] - nilai_tujuan_x[i]), 2) + Math.pow((nilai_asal_y[i]- nilai_tujuan_y[i]), 2)); canvas.text(x_tengah, y_tengah, panjang_path[i].toFixed(0)).attr(attr_teks_panjang_path); //tampilkan text pada masing-masing titik canvas.text(nilai_asal_x[i], nilai_asal_y[i],nama_path_asal_semua[i]).attr(attr_titik); } for(var i=0; i<path_semua_macet.length;i++){ console.log("macet : " +path_semua_macet[i]); path_penumpang_macet[i] = canvas.path(path_semua_macet[i]).attr(attr_path_mobil_macet); } for(var i=0;i<path_penumpang.length; i++){ path_penumpang[i].click(function(event) { //untuk mendapatkan id path yang diklik, kemudian ambil ujung dari path yang diklik, //ini berfungsi untuk menambah titik yang diklik pada floyd var id_path_yang_diklik = this.data("id"); var index_yang_diklik; for(var j=0; j<id_path_semua.length; j++){ if(id_path_semua[j] == id_path_yang_diklik){

index_yang_diklik = j; break; } } var nama_koordinat_samping_yang_diklik = [nama_path_asal_semua[index_yang_diklik],nama_path_tujuan_semua[index_yang_d iklik]]; //alert(titik_samping_yang_diklik); var nilai_koordinat_path_yang_di_klik = [event.x, event.y- jarak_header]; // console.log("Tujuan mobil sekarang: "+ koordinat_path_yang_di_klik); // console.log("koordinat semua titik: "+ koordinat_semua_titik); //mendapatkan tujuan semua mobil agar bisa dikirim ke floyd var daftar_tujuan_mobil = tujuan_mobil_sekarang(); var nilai_koordinat_mobil_sekarang_yang_tidak_menjemput = new Array();; var counter_mobil_yang_menjemput =0; for(var j=0;j<nilai_koordinat_mobil_sekarang.length; j++){ if(mobil_yang_sedang_menjemput_penumpang[j] == -1){ nilai_koordinat_mobil_sekarang_yang_tidak_menjemput[j] = nilai_koordinat_mobil_sekarang[j]; }else{ } } $.ajax({ type: 'POST', cache: false , url: 'floyd/fw_jemput_penumpang.php', data: { nilai_koordinat_semua_titik:JSON.stringify(nilai_koordinat_semua_titik), koordinat_semua_path:JSON.stringify(koordinat_semua_path), nilai_koordinat_path_yang_di_klik:JSON.stringify(nilai_koordinat_path_yang_di_kli k), nama_koordinat_samping_yang_diklik:JSON.stringify(nama_koordinat_samping_yan g_diklik), nilai_koordinat_mobil_sekarang:JSON.stringify(nilai_koordinat_mobil_sekarang_yan g_tidak_menjemput),

nama_koordinat_samping_mobil:JSON.stringify(nama_koordinat_samping_mobil) }, success: function(hasil) { console.log(hasil); var nilai_balik = jQuery.parseJSON(hasil); // path_menjemput_penumpang = canvas.path(nilai_balik[2]).attr(attr_path_mobil_terpendek); // path_mobil[nilai_balik[0]] = canvas.path(path_menjemput_penumpang); status_jemput_penumpang[nilai_balik[0]] = 0; mobil_jemput_penumpang[nilai_balik[0]] = nilai_balik[0]; var random_warna=((1<<24)*Math.random()|0).toString(16); attr_path_mobil_terpendek ={"stroke": "#"+random_warna,"stroke-width": "4"}; var attr_random_warna_penumpang ={"stroke": "#"+random_warna,"stroke-width": "4", fill:"'#"+random_warna+"'", opacity:0.4}; path_jemput_penumpang[nilai_balik[0]] = canvas.path(nilai_balik[2]).attr(attr_path_mobil_terpendek); //lingkaran penumpang circle_penumpang[nilai_balik[0]]=canvas.circle(event.x, event.y-jarak_header, 50).attr(attr_random_warna_penumpang); //tampilkan nama penumpang counter_penumpang++; path_circle_penumpang[nilai_balik[0]] = canvas.text(event.x, event.y-jarak_header,"Penumpang "+counter_penumpang).attr(attr_teks_penumpang); mobil_yang_sedang_menjemput_penumpang[nilai_balik[0]] = 1; keterangan = "<br/>Mobil : M"+nilai_balik[0]

  • "<br/> Jarak :" +nilai_balik[4]
  • "<br/>Penumpang :" +"Penumpang "+counter_penumpang
  • "<br/><br/>"+keterangan; document.getElementById("keterangan").innerHTML = keterangan; var nilai_koordinat_asal_untuk_mengantar = nilai_koordinat_path_yang_di_klik; console.log("Koordinat Penumpang : " + nilai_koordinat_asal_untuk_mengantar); $.ajax({ type: 'POST', cache: false , url: 'floyd/data_penumpang.php', data: {
operasi:JSON.stringify("insert"), nama_mobil:JSON.stringify("M "+nilai_balik[0]), nama_penumpang:JSON.stringify("Penumpang " + counter_penumpang), koordinat:JSON.stringify(nilai_koordinat_path_yang_di_klik), nama_titik_samping_koordinat:JSON.stringify(nama_koordinat_samping_yang_dikli k) }, success: function(hasil) { //alert(hasil); } }); } }); }); } window.setInterval("method_mobil()", 30); //method_animasi(); }; function hitung_panjang_path(){ for(var i=0; i<path_semua.length;i++){ var x_tengah = (eval(nilai_asal_x[i]) + eval(nilai_tujuan_x[i]))/eval(2); var y_tengah = (eval(nilai_asal_y[i]) + eval(nilai_tujuan_y[i]))/eval(2); panjang_path[i] = Math.sqrt(Math.pow((nilai_asal_x[i] - nilai_tujuan_x[i]), 2) + Math.pow((nilai_asal_y[i]- nilai_tujuan_y[i]), 2)); canvas.text(x_tengah, y_tengah, panjang_path[i].toFixed(0)).attr(attr_teks_panjang_path); } } var nilai = new Array(); function tujuan_mobil_sekarang(){ return asal_sekarang; } var posisi = new Array(); function method_mobil(){ for(var i = 0; i<mobil.length; i++){ posisi[i] = method_animasi(i); mobil[i].attr({cx: posisi[i].x, cy: posisi[i].y}); //agar teks ikut bergerak teks_no_mobil[i].attr({x: posisi[i].x, y: posisi[i].y});

nilai_koordinat_mobil_sekarang[i] = [Math.round(posisi[i].x),Math.round(posisi[i].y)] // nilai_koordinat_mobil_sekarang_x[i] = Math.round(posisi[i].x); // nilai_koordinat_mobil_sekarang_y[i] = Math.round(posisi[i].y); } } var counter = new Array(); var id_path_yang_sedang_digunakan = new Array(); var asal_sekarang = new Array(); var kategori_titik = new Array(); var pos = new Array(); var hasil_random = new Array(); var id = new Array(); function method_animasi(index_mobil){ for(var i=0;i<status_jemput_penumpang.length;i++){ if(status_jemput_penumpang[i] == 0 && index_mobil == mobil_jemput_penumpang[i]){ path_mobil[index_mobil] = path_jemput_penumpang[i]; counter[index_mobil] =0; status_jemput_penumpang[i]++; } } for(var i=0;i<mobil_jemput_penumpang.length;i++){ //jika sudah sampai pada penumpang if(counter[index_mobil] >= path_mobil[index_mobil].getTotalLength() && index_mobil == mobil_jemput_penumpang[i]){ counter[index_mobil] = 0; mobil_jemput_penumpang[i] = -1; mobil_yang_sedang_menjemput_penumpang[i] = -1; path_mobil[index_mobil] = canvas.path(path_semua[0]); id_path_yang_sedang_digunakan[index_mobil] = id_path_semua[0]; asal_sekarang[index_mobil] = nama_path_tujuan_semua[0]; path_jemput_penumpang[i].remove(); circle_penumpang[i].remove(); path_circle_penumpang[i].remove(); // alert("sampai"); } } if(counter[index_mobil] >= path_mobil[index_mobil].getTotalLength() && index_mobil != mobil_jemput_penumpang){ for(var asal in cabang_titik_semua){ if(asal == asal_sekarang[index_mobil]){ kategori_titik[index_mobil]= cabang_titik_semua[asal];

  } } //console.log("Hasil asal:"+kategori_titik); for(var i=0; i<=path_semua.length;i++){ if(id_path_yang_sedang_digunakan[index_mobil] ==id_path_semua[i]){ hasil_random[index_mobil] = kategori_titik[index_mobil][Math.floor(Math.random()*kategori_titik[index_mobil].l ength)]; id[index_mobil]=0; //dapatkan nilai dan ambil indeksnya di array for(var i=0;i<id_path_semua.length;i++){ if(id_path_semua[i] == hasil_random[index_mobil]){ id[index_mobil]=i; break; } } asal_mobil_sekarang_kirim_php[index_mobil] = asal_sekarang[index_mobil]; path_mobil[index_mobil] = canvas.path(path_semua[id[index_mobil]]).attr(attr_path_mobil_transparan); id_path_yang_sedang_digunakan[index_mobil] = id_path_semua[id[index_mobil]]; asal_sekarang[index_mobil] = nama_path_tujuan_semua[id[index_mobil]]; tujuan_mobil_sekarang_kirim_php[index_mobil] = asal_sekarang[index_mobil]; nama_koordinat_samping_mobil[index_mobil] = [asal_mobil_sekarang_kirim_php[index_mobil], tujuan_mobil_sekarang_kirim_php[index_mobil]]; counter[index_mobil]=0; } } } //ambil x dan y pada posisi counter counter[index_mobil]++; pos[index_mobil] = path_mobil[index_mobil].getPointAtLength(counter[index_mobil]); return pos[index_mobil]; }; </script> </div> </body> </html> <?php include 'include/footer.php'; ?>