java - GPS Tracking Comparison (Android) -


i developing indoor map app college. have stored longitude , latitude each place in map in database. next step getting user's location gps , comparing database able give user name of location. problem comparing step - how it? gps tracking works perfectly.

the class gps tracking:

public class gpstracker {   public gpstracker(context context) {     this.mcontext = context;     getlocation();   }    public location getlocation() {     try {       locationmanager = (locationmanager) mcontext         .getsystemservice(location_service);        // getting gps status       isgpsenabled = locationmanager         .isproviderenabled(locationmanager.gps_provider);        // getting network status       isnetworkenabled = locationmanager         .isproviderenabled(locationmanager.network_provider);        if (!isgpsenabled && !isnetworkenabled) {         // no network provider enabled       } else {         this.cangetlocation = true;         if (isnetworkenabled) {           locationmanager.requestlocationupdates(                                                  locationmanager.network_provider,                                                  min_time_bw_updates,                                                  min_distance_change_for_updates, this);           log.d("network", "network");           if (locationmanager != null) {             location = locationmanager               .getlastknownlocation(locationmanager.network_provider);             if (location != null) {               latitude = location.getlatitude();               longitude = location.getlongitude();             }           }         }         // if gps enabled lat/long using gps services         if (isgpsenabled) {           if (location == null) {             locationmanager.requestlocationupdates(                                                    locationmanager.gps_provider,                                                    min_time_bw_updates,                                                    min_distance_change_for_updates, this);             log.d("gps enabled", "gps enabled");             if (locationmanager != null) {               location = locationmanager                 .getlastknownlocation(locationmanager.gps_provider);               if (location != null) {                 latitude = location.getlatitude();                 longitude = location.getlongitude();               }             }           }         }       }      } catch (exception e) {       e.printstacktrace();     }      return location;   }    /**    * stop using gps listener    * calling function stop using gps in app    * */   public void stopusinggps(){     if(locationmanager != null){       locationmanager.removeupdates(gpstracker.this);     }          }    /**    * function latitude    * */   public double getlatitude(){     if(location != null){       latitude = location.getlatitude();     }      // return latitude     return latitude;   }    /**    * function longitude    * */   public double getlongitude(){     if(location != null){       longitude = location.getlongitude();     }      // return longitude     return longitude;   }    /**    * function check gps/wifi enabled    * @return boolean    * */   public boolean cangetlocation() {     return this.cangetlocation;   }    /**    * function show settings alert dialog    * on pressing settings button lauch settings options    * */   public void showsettingsalert(){     alertdialog.builder alertdialog = new alertdialog.builder(mcontext);      // setting dialog title     alertdialog.settitle("gps settings");      // setting dialog message     alertdialog.setmessage("gps not enabled. want go settings menu?");      // on pressing settings button     alertdialog.setpositivebutton("settings", new dialoginterface.onclicklistener() {         public void onclick(dialoginterface dialog,int which) {           intent intent = new intent(settings.action_location_source_settings);           mcontext.startactivity(intent);         }       });      // on pressing cancel button     alertdialog.setnegativebutton("cancel", new dialoginterface.onclicklistener() {         public void onclick(dialoginterface dialog, int which) {           dialog.cancel();         }       });      // showing alert message     alertdialog.show();   }    @override   public void onlocationchanged(location location) {   }    @override   public void onproviderdisabled(string provider) {   }    @override   public void onproviderenabled(string provider) {   }    @override   public void onstatuschanged(string provider, int status, bundle extras) {   }    @override   public ibinder onbind(intent arg0) {     return null;   }  } 

the code display tracking in mainactivity::

// check if gps enabled if(gps.cangetlocation()){   double latitude = gps.getlatitude();   double longitude = gps.getlongitude();   // \n new line   toast.maketext(getapplicationcontext(), "your location - \nlat: " + latitude + "\nlong: " + longitude, toast.length_long).show(); } else {   // can't location   // gps or network not enabled   // ask user enable gps/network in settings   gps.showsettingsalert(); } 

as told have made collection of database in places of collage lat , long. user near canteen of collage open app app should find nearest place user standing right now. assuming above requirement of collage.

for above requirement best way haversine formula. check wiki link : link

and make r&d on it. using formula technical flow below :

1 : user's lat , long using gps.

2 : send gsp co-ordinates php web service have implemented haversin formula. using formula find nearest place current place database.

3 : have nearest place existing place.

for use haversin formula in php web service please refer links : link

hope want do. please r&d on , sure solve it.


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -