LAMPIRAN A: Nama Jalan Tujuan dan Koordinat
No
Nama simpan tujuan Koordinat
1 Jl. Gatot Subroto/ Jl. Sekip 3.59294 , 98.667695 2 Jl. Perintis Kemerdekaan/ Jl. Prof H. M. Yamin 3.598582, 98.695278 3 Jl. Jendral Sudirman/ Jl. Kapten Patimura 3.577241, 98.666694 4 Jl. Sriwijaya/ Jl. Abdullah Lubis 3.575946, 98.663601 5 Jl. Gaperta/ Jl. T. Amir Hamza 3.604484, 98.645497 6 Jl. Jamin Ginting 3.570989, 98.663292 7 Jl. Setiabudi/ Jl. Dr. Mansyur 3.56747684265253, 98.6422920227051 8 Jl. Dr. Masnyur/ Jl. Kapten Patimura 3.56696285630916, 98.6607456207275 9 Jl. Sunggal/ Jl. Kapten Muslim/ Jl. Gatot Subroto 3.59071300770461, 98.6439335346222 10 Jl. Iskandar Muda/ Petisah 3.57582908041361, 98.6609601974487 11 Jl. H. Adam Malik / Jl. Gatot Subroto/ Jl. Guru Patimpus 3.593414, 98.668915 12 Jl. Medan - Tebing Tinggi/ Jl. Sisingamangaraja 3.53877883297179, 98.7008285522461 13 Jl. Sisingamangaraja / Jl. H. M. Joni 3.568656, 98.69109514 Jl. Karya 3.62206483073233, 98.6651659011841 15 Jl. Gaperta/ Jl. Melur 3.60495423618751, 98.6331295967102 16 Jl. Kapten Sumarsono/ Jl.
Kapten Muslim Gang Mortir
3.61300632087448, 98.6452746391296
17 Jl. Kapten Muslim/ Jl. Gaperta
3.60469725358653, 98.6448669433594
18 Jl. Ahmad Yani/ Jl. Balai Kota
3.59004912546251, 98.677761554718
19 Jl. Ahmad Yani/ Jl. Kom L Yos Sudarso 3.58758633228455, 98.6787915229797 20 Jl. Setiabudi/ Jl. Arteri ringroad 3.54619970978316, 98.6261773109436 21 Jl. Setiabudi/ Jl. Jamin Ginting 3.52016748390514, 98.6190533638 22 Jl. T. Amir Hamza/ Jl. Karya 3.60675311236088, 98.6652946472168 23 Jl. Darussalam/Jl. Gajah Mada 3.5847380501588, 98.6531066894531
24 Jl. Halat/ Jl. Arif Rahman Hakim 3.57218837073343, 98.7031674385071 25 Jl. Gatot Subroto/ Jl. K.H. Wahid Hasyim 3.58989921650233, 98.6583209037781 26 Jl. Gatot Subroto/ Jl. Abdul Hamid/ Jl. Darussalam 3.59011337215219, 98.6532783508301 27 Jl. Gajah Mada/ Jl. K.H. Wahid Hasyim 3.58467380309123, 98.6572265625 28 Jl. Iskandar Muda/ Jl. Jamin Ginting/ Jl. Kapten Patimura
3.57167438702665, 98.6609816551208
29 Jl. A.R.Hakim/ Jl. H.M. Joni/ Jl. Bahagia
3.56833348591936, 98.7030601501465
31 Jl. Sei Batang Hari/ Jl. Kutilang/ Jl. Setia Budi/ Jl. Sunggal
3.5851877795054, 98.6413478851318
32 Jl. Jamin Ginting/ Jl. Medan – Tebing Tinggi
3.540438, 98.654117 33 Jl. Sisingamangaraja/ Jl. Polonia/ Jl. Halat/ Jl. Cirebon 3.57218837073343, 98.6894989013672 34 Jl. Kenanga Raya/ Jl. Setiabudi 3.56152314989888, 98.6376786231995 35 Jl. Sunggal/ Jl. Medan- Tebing Tinggi 3.57818482603349, 98.626434803009 36 Jl. Gaperta Ujung/ Jl. Gaperta/ Jl. Asrama 3.60508272746079, 98.6280655860901 37 Jl. Kapten Sumarsono/ Jl. Setia Budi/ Gang Mesjid
3.61519065068296, 98.6516904830933 38 Jl. Kapten Sumarsono/ Jl. Karya 3.62472026325773, 98.663170337677 39 Jl. Abdullah Lubis/ Jl. Sriwijaya 3.57665359206928, 98.66370677948 40 Jl. T. Amir Hamza/ Jl. Bambu II/ Jl. H. Adam Malik
3.60666745167143, 98.6691784858704
41 Jl. Helvetia/ Jl. Kapten Sumarsono
3.61572602483334, 98.6328077316284
42 Gang Gayo/ Jl. Setiabudi 3.55861053797465, 98.6263275146484 43 Jl. Kapten Patimura/ Jl.
Cinge/ Jl. Jamin Ginting
3.57283084996211, 98.6619472503662
44 Jl. Kapten Patimura/ Jl. Abdullah Lubis
3.57657863649487, 98.666421175003
45 Jl. Budi Luhur/ Gang Banteng 3.59576706313517, 98.6337947845459 46 Jl. J. S. Parman/ Jl. Kapten Patimura / Jl. Dokter TD Pardede 3.57912712258578, 98.6672902107239
47 Jl. Dokter TD Pardede / Jl. Sriwijaya 3.57919137004269, 98.6636745929718 48 Jl. Iskandar Muda/ Jl. Dokter TD Pardede 3.57925561749509, 98.6610567569733 49 Jl. Iskandar Muda/ Jl. Gajah Mada 3.58459884817336, 98.6612606048584 50 Jl. Gajah Mada / Jl. J. S. Parman 3.58415982638822, 98.6669039726257 51 Jl. Glugur/ Jl. J. S. Parman 3.58986709315052, 98.6689531803131 52 Jl. Kapten Maulana Lubis/
Jl. Gatot Subroto/ Jl. J. S. Parman
3.59150538265199, 98.6712598800659
53 Jl. Kapten Maulana Lubis/ Jl. Imam Bonjol
3.58947090505196, 98.6741995811462
54 Jl. Imam Bonjol / Jl. KH. Zainul Arifin/ Jl. Palang Merah
3.58365655725334, 98.6751544475555
55 Jl. Palang Merah/ Jl. Pemuda/ Jl. Kom L Yos Sudarso
3.58463097171034, 98.6806046962738
56 Jl. Palang Merah/ Jl. Pemuda/ Jl. Kom L Yos Sudarso 3.59562786283093, 98.6756265163422 57 Jl. Darussalam/ (Grand Kanaya Hotel) 3.58731863697388, 98.6531925201416 58 Jl. Darusalam/ Grand Kanaya Hotel 3.58732934478782, 98.6542439460754
59 Jl. Setia Budi/ Gang Gayo 3.55880328463659, 98.63560795784 60 Jl. Melati Raya/ Jl. Flamboyan Raya/ Jl. Setiabudi 3.54092050626844, 98.6223793029785 61 Jl. Matahari Raya/ Jl. Melur (Helvetia) 3.61037226911223, 98.6334407329559 62 Jl. Melati Raya/ Jl. Asrama/ Jl. Helvetia 3.61050075961939, 98.6276149749756
63 Jl. Kapten Sumarsono/ Jl. Pringgan
3.61877765145288, 98.6556172370911
64 Jl. Pringgan / Jl. Karya II 3.619061398669, 98.6465030908585 65 Jl. Karya II/ Jl. Kapten
Sumarsono 3.61538873915544, 98.6457359790802 66 Jl. Rajawali/ Jl. Merak/ Jl. Kasuari 3.58448106186143, 98.6332583427429 67 Jl. Medan - Tebing Tinggi/ Jl. Merak/ Jl. Kasuari 3.58479158937832, 98.6268961429596 68 Jl. Rajawali / Jl. Sunggal 3.57966251792229, 98.6332368850708 69 Jl. Kasuari persimpangan 2/ Jl. Sunggal/ Jl. Setiabudi 3.58414911853716, 98.6411869525909 70 Jl. KH. Wahid Hasyim 3.58696527904377, 98.6572909355164 71 Jl. Gatot Subroto/ Jl.
Iskandar Muda (Medan Plaza ) 3.59075583880042, 98.6614966392517 72 Jl. Sei Serayu/ Jl. Darusalam 3.576971, 98.652795 73 Jl. Budi Pembangunan/ Jl. Kom L Yos sudarso
3.62232180841407, 98.6700582504272 74 Jl. Pertempuran/ Jl. Cemara 3.62842500689912, 98.6693930625915 75 Jl. Pertempuran 3.6276326641598065, 98.66256952285767 76 Jl. Prof. HM. Yamin/ Jl. A. R. Hakim 3.59771586516263, 98.7063217163086
77 Jl. Kom L Yos Sudarso/ Jl. T. Amir Hamza/ Jl. Bambu II 3.60680665028768, 98.6740064620972 78 Jl. Imam Bonjol/ RS Columbia Medan 3.58615148450331, 98.67373824119568 79 Jl. Iskandar Muda/ Jl. Abdullah Lubis 3.5767392555753794 98.66094946861267
80 Jl. Gatot Subroto/ RS Advent Medan
3.59029540441509, 98.6497700214386
81 Jl. IR. H. Juanda/ Jl. Cinge 3.572723770121901 , 98.67196798324585 82 Jl. Sudirman/ Jl. IR. H.
Juanda
3.57503669189, 98.6701226234436
83 Jl. Budi Luhur/ Jl. Kapten Muslim 3.59503893823173, 98.6445879936218 84 Jl. KH. Zainul Arifin/ Jl. Pangeran Diponegoro 3.583557, 98.672774 85 Jl. Pangeran Diponegoro/ Jl. Perdana/ Jl. Kejaksaan 3.586895, 98.672917 86 Jl pintu 1/ Jl.DR mansyur 3.56736 , 98.660069 87 Jl. Setia Budi/ Jl castus
raya
3.563935 , 98.639305
88 Jl.Setia Budi/ Gang Rambutan 1
3.556876 , 98.634055
89 Jl.Setia Budi/ JL. Bunga Cempaka
3.55141, 98.630122
90 Jl. Setia Budi/ Jl.Bunga Wijaya Kusuma
3.549918 , 98.629031
91 JL.Setia Budi/ Pasar 1 3.558811 , 98.635494
92 Jamin Ginting Carefour 3.549136 ,98.659674
93 Jl.Jamin Ginting/ JL.Pintu air IV
3.538154 , 98.652124
94 Jl. Ngumbar Surbakti 3.540432 , 98.649541 95 Setia Budi/Mie Aceh Titi
Bobrok
3.583788 , 98.642293
LAMPIRAN B: Nama Jalan SPBU dan Koordinat
NO
No SPBU
Alamat
Koordinat
1 14.20111.34 Jl. Setiabudi 3.577456 , 98.643149
2 14.201120 JL. KOM L Yos Sudarso 3.5867725382974 ,98.6792421340942 3 24-201133 JL.by Pass / Kapt
Sumarsono 81, Medan Kota 3.61534055547693 ,98.645167350769 4 11201104 Jl. Gatot Subroto, Medan Petisah km 12 3.592576 , 98.669926 5 14.201139 Jl. Asrama, Medan Sunggal 3.5930901304831, 98.6271750926971 6 14201123 Jl .Gatot Subroto KM, 5.2 3.59109848749464, 98.6410582065582 7 14.2021.26 Jl. Gatot Subroto, samping Jl. Rajawali 3.591163, 98.633444 8 14.202101 Jl. Sisingamaraja 3.540134, 98.700041 9 11-201103 Jl. Sisingamangaraja No 45 3.56859, 98.695278 10 14.20111.50 JL. Kasuari, No. 55, Medan Sunggal 3.58422407349188, 98.637056350708 11 14.202102 JL. Sisingamangaraja, Km. 6, 5 No. 28 3.54828782456003, 98.6990261077881 12 14.201.109 JL Jamin Ginting 3.54032083824458, 98.6541366577148 13 11.201.102 JL. Ahmad Yani/Jl.Kumango 3.58799322900655, 98.6791616678238 14 14.201.1148 Jl. Dr Mansyur No.10 3.56750896678945, 98.6517602205276 15 14-291125 Jl. Jend. Gatot Subroto,
Medan Sunggal, Medan
16 14-201121 Jl.Ngumban Surbakti/Jl Medan Tebing 3.540623, 98.636781 17 14.201103 Jl. Setia Budi 3.566002, 98.640933 18 14-201145 Jl. Karya, Medan 3.613606, 98.665634 19 14.203.199 Jl. jamin Ginting 3.532578, 98.645529 20 14.201.1144 Jl. Setiabudi /Jl.Jamin Ginting 3.522116, 98.619411 21 14 201192 Jl. Gajah Mada 3.58482371290854, 98.6542654037476 22 14.201.128 Jl. Jamin Ginting 3.524123, 98.62821
23 14-202140 JL. Arif Rahman Hakim , Tegal Sari III, Medan Kota, 3.576814, 98.703375 24 14.201.1154 Jl. Ir. H. Juanda No 64 Medan Maimun 3.57193137891601, 98.6816883087158 25 14.20211155 Jl. Merbabu, Medan Kota 3.589664, 98.649817 26 14-201111 Jl. Kapten Muslim, Medan 3.605597, 98.64481 27 14-201110 JL.Melur , Helvetia, Medan Kota 3.60741698243039, 98.6333227157593 28 24-14201139 Jl. Bahagia By Pass, Medan Kota 3.568248, 98.702145 29 14.201.1165 Jl. Jamin Ginting 3.56178442788753, 98.6625630856543 30 142011147 Jl. Sunggal / Jl. Kapten Muslim 3.59048, 98.643855
LAMPIRAN C: Kode Program
1. List Program Menampilkan Rekomendasi SPBU terdekat di Android
package spbu.medan;public class KoneksiMethod extends Koneksi {
// String URL = "http://10.0.2.2/SPBU_kotamedan/android.php"; String URL = "http://192.168.97.1/SPBU_kotamedan/android.php"; String url = "";
String response = "";
public String tampil_daftar_titik() {
return koneksiManager("?operasi=tampil_daftar_titik", "tampil_daftar_titik");
}
public String tampil_daftar_spbu() {
return koneksiManager("?operasi=tampil_daftar_spbu", "tampil_daftar_spbu");
}
public String cari_titik_terdekat(String lang, String ltd, String id_titik_tujuan) { return koneksiManager("?operasi=cari_titik_terdekat&lang=" + lang + "<d=" + ltd + "&id_titik_tujuan=" + id_titik_tujuan, "cari_titik_terdekat"); }
public String cari_titik_koordinat_terdekat(String lang, String ltd,
String id_titik_tujuan) { return
koneksiManager("?operasi=cari_titik_koordinat_terdekat&lang="
+ lang + "<d=" + ltd + "&id_titik_tujuan=" + id_titik_tujuan,
"cari_titik_koordinat_terdekat"); }
public String tampil_titik_koordinat_terdekat() { return
koneksiManager("?operasi=tampil_titik_koordinat_terdekat", "cari_titik_koordinat_terdekat"); }
public String koneksiManager(String url, String keterangan) { try {
//call("http://192.168.97.1/SPBU_kotamedan/android.php?operasi= tampil_titik_koordinat_terdekat")
response = call(URL + url);
System.out.println("url : " + URL + url); } catch (Exception e) { System.out.println(e.toString()); } System.out.println("Hasil " + keterangan + " : " + String.valueOf(response)); return response; } }
2.List Program untuk GPS di Android
package spbu.medan; import android.app.AlertDialog; import android.app.Service; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.provider.Settings;public class GpsService extends Service implements LocationListener { private final Context _context;
// cek apakah GPS aktif ? boolean isGPSEnable = false; // cek network aktif ?
boolean isNetworkEnable = false; boolean canGetLocation = false; Location location;
double latitude; double longitude;
// GPS akan update ketika jarak sudah berubah lebih dari 10 meter
private static final long MIN_JARAK_GPS_UPDATE = 10; // meter // GPS akan update pada waktu interval
protected LocationManager locManager; public GpsService(Context context) {
_context = context; getLocation(); }
private Location getLocation() { try {
locManager = (LocationManager) _context
.getSystemService(LOCATION_SERVICE); // cek GPS status
isGPSEnable = locManager
.isProviderEnabled(LocationManager.GPS_PROVIDER); // cek status koneksi
isNetworkEnable = locManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnable && !isNetworkEnable) {
// tidak ada koneksi ke GPS dan Jaringan } else {
// bisa dapatkan lokasi canGetLocation = true;
// cek apakah koneksi internet bisa ? if (isNetworkEnable) {
// ambil posisi berdasarkan Network locManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER,
MIN_WAKTU_GPS_UPDATE, MIN_JARAK_GPS_UPDATE, this);
if (locManager != null) {
// ambil posisi terakhir user menggunakan Network
location = locManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
// jika lokasi berhasil didapat if (location != null) { // ambil latitude latitude = location.getLatitude(); // ambil longitude longitude = location.getLongitude(); } } }
// jika gps bisa digunakan if (isGPSEnable) {
if (location == null) {
locManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_WAKTU_GPS_UPDATE, MIN_JARAK_GPS_UPDATE, this); if (locManager != null) {
// dapatkan posisi terakhir user menggunakan GPS
location = locManager .getLastKnownLocation(LocationManager.GPS_PROVIDER);
// jika lokasi berhasil didapat if (location != null) { // ambil latitude latitude = location.getLatitude(); // ambil longitude longitude = location.getLongitude(); } } } } } } catch (Exception e) { e.printStackTrace(); } return location; } @Override
public void onLocationChanged(Location location) { // TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) { // TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) { // TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null;
}
public double getLatitude() { if (location != null)
latitude = location.getLatitude(); return latitude;
}
public void setLatitude(double latitude) { this.latitude = latitude;
}
public double getLongitude() { if (location != null)
longitude = location.getLongitude(); return longitude;
}
public void setLongitude(double longitude) { this.longitude = longitude;
}
public boolean canGetLocation() { return this.canGetLocation; }
public void showSettingAlert(final Context contextForDialog) { AlertDialog.Builder alertDialog = new
AlertDialog.Builder(
contextForDialog); // title Alertnya
alertDialog.setTitle("Pengaturan GPS"); // pesan alert
alertDialog.setMessage("GPS Tidak Aktif. Aktifkan GPS?"); alertDialog.setPositiveButton("Setting",
new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS); contextForDialog.startActivity(intent); } }); alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel(); }
}); alertDialog.show(); }
public void stopUsingGPS() { if (locManager != null)
locManager.removeUpdates(GpsService.this); }
}
3. List Program untuk mencari jarak SPBU terdekat
<?php set_time_limit(300); include 'koneksi.php'; include 'belman/bellman_ford.php'; @$operasi = strtolower($_GET['operasi']); if ($operasi == "cari_titik_koordinat_terdekat") { $lang = $_GET['lang']; $ltd = $_GET['ltd']; $id_titik_tujuan = $_GET['id_titik_tujuan']; $array_titik_terdekat = cari_titik_terdekat_menuju_tujuan($lang, $ltd, $id_titik_tujuan);$hasil [] = array('id' => 0, 'no_spbu' => '',
'nama_titik_lengkap' => 'Titik Asal', 'alamat' => '', 'lang' => $lang, 'lng' => $ltd);
for ($i = 1; $i < count($array_titik_terdekat); $i++) { $q = mysql_query("SELECT * FROM titik WHERE
id=$array_titik_terdekat[$i]") or die(mysql_error()); $hasil[] = mysql_fetch_assoc($q);
}
$q_temp_jarak_terdekat = mysql_query("SELECT * FROM `temp_jarak` ORDER BY `jarak_ke_spbu`+`jarak_spbu_ke_tujuan` ASC");
$q_temp = mysql_query("SELECT * FROM temp_jarak ORDER BY jarak_ke_spbu+jarak_spbu_ke_tujuan ASC LIMIT 3") or die(mysql_error());
while ($row_temp = mysql_fetch_array($q_temp)) { $jarak = $row_temp['jarak_ke_spbu'] +
$row_temp['jarak_spbu_ke_tujuan']; $id = $row_temp['id'];
$q_titik = mysql_query("SELECT * FROM titik WHERE id=$id") or die(mysql_error());
$r_titik = mysql_fetch_array($q_titik); $hasil[] = array('id' => $id, 'no_spbu' => $r_titik['no_spbu'], 'nama_titik_lengkap' =>
$r_titik['nama_titik_lengkap'], 'alamat' => $r_titik['alamat'], 'lang' => $r_titik['lang'], 'lng' => $r_titik['lng'],
$row_temp['jarak_ke_spbu'],'jarak_spbu_ke_tujuan' => $row_temp['jarak_spbu_ke_tujuan']); } if(count($hasil) == 3){ echo json_encode($hasil); }else{ }
} else if ($operasi == "tampil_daftar_spbu") {
$q = mysql_query("SELECT * FROM titik WHERE no_spbu !=''"); while ($row = mysql_fetch_assoc($q)) {
$array_spbu[] = $row; }
echo json_encode($array_spbu);
} else if ($operasi == "tampil_daftar_titik") {
$q = mysql_query("SELECT * FROM titik WHERE no_spbu =''"); while ($row = mysql_fetch_assoc($q)) {
$array_spbu[] = $row; }
echo json_encode($array_spbu); }
function Bellman_Ford($array_relasi_titik, $asal, $tujuan) {
$path = array(); $samping = array();
//1. tentukan semua titik yang menjadi tujuan foreach ($array_relasi_titik as $relasi) { array_push($path, $relasi[0], $relasi[1]);
$samping[$relasi[0]][] = array("tujuan" => $relasi[1], "jarak" => $relasi[2]);
$samping[$relasi[1]][] = array("tujuan" => $relasi[0], "jarak" => $relasi[2]);
}
$path = array_unique($path);
foreach ($path as $vertex) {
$titik_sekarang[$vertex] = INF; $titik_sebelumnya[$vertex] = NULL; } $titik_sekarang[$asal] = 0; $path_temp = $path; while (count($path_temp) > 0) { //cari nilai yang paling kecil $min = INF;
foreach ($path_temp as $vertex) {
$min = $titik_sekarang[$vertex]; $u = $vertex;
} }
$path_temp = array_diff($path_temp, array($u)); if ($titik_sekarang[$u] == INF or $u == $tujuan) { break;
}
if (isset($samping[$u])) {
foreach ($samping[$u] as $arr) {
$alt = $titik_sekarang[$u] + $arr["jarak"]; if ($alt < $titik_sekarang[$arr["tujuan"]]) { $titik_sekarang[$arr["tujuan"]] = $alt; $titik_sebelumnya[$arr["tujuan"]] = $u; } } } } $path = array(); $u = $tujuan; while (isset($titik_sebelumnya[$u])) { array_unshift($path, $u); $u = $titik_sebelumnya[$u]; } array_unshift($path, $u); return $path; } ?>