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
14 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
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
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
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
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) {
//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",
@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;
}