rachmadi

Nearby

Jan 10th, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.96 KB | None | 0 0
  1. package info.rekayasa.palmo;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.HashMap;
  6.  
  7. import com.google.analytics.tracking.android.EasyTracker;
  8. import com.google.analytics.tracking.android.MapBuilder;
  9. import com.google.android.gms.maps.GoogleMap;
  10.  
  11. import android.app.Activity;
  12. import android.content.Context;
  13. import android.content.Intent;
  14. import android.location.Location;
  15. import android.location.LocationListener;
  16. import android.location.LocationManager;
  17. import android.os.Bundle;
  18. import android.view.Menu;
  19. import android.view.View;
  20. import android.widget.AdapterView;
  21. import android.widget.ArrayAdapter;
  22. import android.widget.ListAdapter;
  23. import android.widget.ListView;
  24. import android.widget.SimpleAdapter;
  25. import android.widget.AdapterView.OnItemClickListener;
  26.  
  27. public class Nearby extends Activity implements LocationListener{
  28.     private MyDatabase db;
  29.     public static double lat;
  30.     public static double lng;
  31.     ListView listlokasi;
  32.     ListViewAdapter lviewAdapter;
  33.     private EasyTracker easyTracker = null;
  34.     GoogleMap map;
  35.     double curlat, curlng;
  36.     float distance;
  37.     protected LocationManager locationManager;
  38.     protected LocationListener locationListener;
  39.     private ArrayList<HashMap<String, String>> locationtList;
  40.    
  41.     String [] nama = new String[100];
  42.    
  43.     private static final String TAG_NO = "no";
  44.     private static final String TAG_NAME = "nama";
  45.     private static final String TAG_DISTANCE = "distance";
  46.    
  47.     ArrayAdapter<String> adapter;
  48.  
  49.     @Override
  50.     protected void onCreate(Bundle savedInstanceState) {
  51.         super.onCreate(savedInstanceState);
  52.         setContentView(R.layout.location_list);
  53.         listlokasi=(ListView)findViewById(R.id.listLocation);
  54.         listlokasi.setTextFilterEnabled(true);
  55.         easyTracker = EasyTracker.getInstance(Nearby.this);
  56.        
  57.         db = new MyDatabase(this);
  58.         db.getLocation();
  59.        
  60.         locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  61.         if (!locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
  62.             locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 10, this);
  63.            
  64.             curlat = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLatitude();
  65.             curlng = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLongitude();
  66.         }
  67.         else if(locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER )){
  68.             locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 10, this);
  69.            
  70.             curlat = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLatitude();
  71.             curlng = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getLongitude();
  72.         }
  73.        
  74.        
  75.         adapter = new ArrayAdapter<String>(this, android.R.layout.two_line_list_item, nama);  
  76.         listlokasi.setAdapter(adapter);
  77.        
  78.        
  79.         fill();
  80.     }
  81.    
  82.     @Override
  83.     protected void onStart() {
  84.         super.onStart();
  85.         EasyTracker.getInstance(this).activityStart(this);
  86.     }
  87.  
  88.     @Override
  89.     protected void onStop() {
  90.         super.onStop();
  91.         EasyTracker.getInstance(this).activityStop(this);
  92.     }
  93.  
  94.     @Override
  95.     public boolean onCreateOptionsMenu(Menu menu) {
  96.         // Inflate the menu; this adds items to the action bar if it is present.
  97.         getMenuInflater().inflate(R.menu.main, menu);
  98.         return true;
  99.     }
  100.    
  101.     //mengisi listview dan mendeteksi tap pada item list
  102.     //dan memanggil google maps untuk menunjukkan lokasi yg dipilih
  103.     public void fill(){
  104.        
  105.         locationtList = new ArrayList<HashMap<String, String>>();
  106.        
  107.         for(int i=0;i<db.namamap.size();i++){
  108.             System.out.println("i: "+i);
  109.             String no=db.nomap.get(i);
  110.             String nama=db.namamap.get(i);
  111.             String destlat=db.latmap.get(i);
  112.             String destlng=db.lngmap.get(i);
  113.             double dlat = Double.parseDouble(destlat);
  114.             double dlng = Double.parseDouble(destlng);
  115.             distance = getDistance(dlat, dlng);
  116.             float dist = distance/1000;
  117.            
  118.             String distance = String.valueOf(dist)+" km";
  119.             System.out.println("Nama: "+nama);
  120.             System.out.println("Distance: "+distance);
  121.             System.out.println("Lat: "+curlat);
  122.             System.out.println("Lng: "+curlng);
  123.            
  124.             HashMap<String, String> map = new HashMap<String, String>();
  125.             map.put(TAG_NAME, nama);           
  126.             map.put(TAG_DISTANCE, distance);
  127.             map.put(TAG_NO,no);
  128.             locationtList.add(i, map);
  129.         }
  130.  
  131.         Collections.sort(locationtList, new MapComparator(TAG_DISTANCE));
  132.        
  133.         ListAdapter adapter = new SimpleAdapter(this, locationtList,
  134.                 R.layout.rowlist, new String[] { TAG_NAME, TAG_DISTANCE },
  135.                 new int[] { R.id.tvNama, R.id.tvAlamat });
  136.        
  137.         listlokasi.setAdapter(adapter);    
  138.        
  139.         listlokasi.setOnItemClickListener(new OnItemClickListener() {
  140.             @Override
  141.             public void onItemClick(AdapterView<?> arg0, View view, int posisi,
  142.                     long id) {
  143.                 String no = null,nama = null,alamat = null,telpon = null,foto = null,destlat,destlng;
  144.                 double dlat = 0, dlng = 0;
  145.                 for(int i=0;i<locationtList.size();i++)
  146.                 {
  147.                     if(posisi==i)
  148.                     {
  149.                         HashMap<String, String> pecah_data=locationtList.get(i);
  150.  
  151.                         String nomor = pecah_data.get("no");
  152.                         db.getNearbyLocation(nomor);
  153.                         System.out.println("nomor: "+nomor);
  154.                        
  155.                         for(int j=0;j<db.namamap.size();j++){
  156.                             System.out.println("j: "+j);
  157.                             no=db.nomap.get(j);
  158.                             nama=db.namamap.get(j);
  159.                             alamat=db.alamatmap.get(j);
  160.                             telpon=db.telponmap.get(j);
  161.                             foto=db.gambarmap.get(j);
  162.                             destlat=db.latmap.get(j);
  163.                             destlng=db.lngmap.get(j);
  164.                             dlat = Double.parseDouble(destlat);
  165.                             dlng = Double.parseDouble(destlng);                        
  166.                         }
  167.  
  168.                        
  169.                         easyTracker.send(MapBuilder.createEvent("Nama lokasi: "+nama,
  170.                                 null, null, null).build());
  171.                        
  172.                        
  173.                         Intent intent = new Intent (Nearby.this,LocationDetail.class);
  174.                         intent.putExtra("no", no);
  175.                         intent.putExtra("nama", nama);
  176.                         intent.putExtra("alamat", alamat);
  177.                         intent.putExtra("telpon", telpon);
  178.                         intent.putExtra("latitude", dlat);
  179.                         intent.putExtra("longitude", dlng);
  180.                         intent.putExtra("foto", foto);
  181.                         startActivity(intent);
  182.                     }
  183.                 }
  184.                
  185.  
  186.             }
  187.         });
  188.     }
  189.    
  190.     public float getDistance(double destlat, double destlng){      
  191.         float[] results= new float[1];
  192.         Location.distanceBetween(curlat, curlng, destlat, destlng, results);
  193.         float distance = results[0];
  194.         return distance;
  195.     }
  196.  
  197.     @Override
  198.     public void onLocationChanged(Location location) {
  199.         // TODO Auto-generated method stub
  200.         this.curlat = location.getLatitude();
  201.         this.curlng = location.getLongitude();
  202.        
  203.         fill();
  204.     }
  205.  
  206.     @Override
  207.     public void onStatusChanged(String provider, int status, Bundle extras) {
  208.         // TODO Auto-generated method stub
  209.        
  210.     }
  211.  
  212.     @Override
  213.     public void onProviderEnabled(String provider) {
  214.         // TODO Auto-generated method stub
  215.     }
  216.  
  217.     @Override
  218.     public void onProviderDisabled(String provider) {
  219.         // TODO Auto-generated method stub
  220.        
  221.     }
  222.    
  223.     @Override
  224.     public void onPause(){
  225.         super.onPause();
  226.         locationManager.removeUpdates(this);
  227.        
  228.     }
  229.  
  230. }
Advertisement
Add Comment
Please, Sign In to add comment