java - Set Map Location Radius -
i'm facing issue related maps. issue when customer ordered food order goes drivers. want if customer lives in xyz area order goes drivers in xyz area not drivers or order goes 10/15km radius customer location
here map code:
public class mapsactivity extends appcompatactivity implements onmapreadycallback, googleapiclient.connectioncallbacks, googleapiclient.onconnectionfailedlistener, com.google.android.gms.location.locationlistener { googlemap mgooglemap; supportmapfragment mapfrag; locationrequest mlocationrequest; googleapiclient mgoogleapiclient; location mlastlocation; marker mcurrlocationmarker; double mcurrlat=0.0,mcurrlong=0.0; geocoder geocoder; firebaseuser currentfirebaseuser; databasereference databasereference; longtitudelatitude set_long_lat; button confirmlocation; tinydb db; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_maps); currentfirebaseuser = firebaseauth.getinstance().getcurrentuser(); databasereference = firebasedatabase.getinstance().getreference(constants.orders); confirmlocation=(button)findviewbyid(r.id.confirmlocation); db=new tinydb(getapplicationcontext()); mapfrag = (supportmapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map); mapfrag.getmapasync(this); } @override public void onpause() { super.onpause(); //stop location updates when activity no longer active if (mgoogleapiclient != null) { locationservices.fusedlocationapi.removelocationupdates(mgoogleapiclient, (com.google.android.gms.location.locationlistener) this); } } @override public void onmapready(googlemap googlemap) { mgooglemap=googlemap; mgooglemap.setmaptype(googlemap.map_type_terrain); //initialize google play services if (android.os.build.version.sdk_int >= build.version_codes.m) { if (contextcompat.checkselfpermission(this, manifest.permission.access_fine_location) == packagemanager.permission_granted) { //location permission granted buildgoogleapiclient(); mgooglemap.setmylocationenabled(true); } else { //request location permission checklocationpermission(); } } else { buildgoogleapiclient(); mgooglemap.setmylocationenabled(true); } } protected synchronized void buildgoogleapiclient() { mgoogleapiclient = new googleapiclient.builder(this) .addconnectioncallbacks(this) .addonconnectionfailedlistener(this) .addapi(locationservices.api) .build(); mgoogleapiclient.connect(); } @override public void onconnected(bundle bundle) { mlocationrequest = new locationrequest(); // mlocationrequest.setinterval(100000); //mlocationrequest.setfastestinterval(100000); mlocationrequest.setpriority(locationrequest.priority_balanced_power_accuracy); if (contextcompat.checkselfpermission(this, manifest.permission.access_fine_location) == packagemanager.permission_granted) { locationservices.fusedlocationapi.requestlocationupdates(mgoogleapiclient, mlocationrequest,this); } } @override public void onconnectionsuspended(int i) {} @override public void onconnectionfailed(connectionresult connectionresult) {} @override public void onlocationchanged(final location location) { mlastlocation = location; if (mcurrlocationmarker != null) { mcurrlocationmarker.remove(); } geocoder=new geocoder(this, locale.getdefault()); set_long_lat = new longtitudelatitude(); //place current location marker latlng latlng = new latlng(location.getlatitude(), location.getlongitude()); markeroptions markeroptions = new markeroptions(); markeroptions.position(latlng); // set_long_lat.setlat(location.getlatitude()); //set_long_lat.setlng(location.getlongitude()); //set_long_lat.setaddress(address); // databasereference.child(currentfirebaseuser.getuid()).setvalue(set_long_lat); markeroptions.title("current position"); markeroptions.icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_magenta)); mcurrlocationmarker = mgooglemap.addmarker(markeroptions); mcurrlocationmarker.setdraggable(true); markeroptions.position(latlng); //move map camera mgooglemap.movecamera(cameraupdatefactory.newlatlngzoom(latlng,16)); mgooglemap.setonmarkerdraglistener(new googlemap.onmarkerdraglistener() { @override public void onmarkerdrag(marker arg0) { // todo auto-generated method stub log.d("marker", "dragging"); } @override public void onmarkerdragend(marker arg0) { // todo auto-generated method stub latlng markerlocation = mcurrlocationmarker.getposition(); // toast.maketext(mapsactivity.this, markerlocation.tostring(), toast.length_long).show(); mcurrlat=markerlocation.latitude; mcurrlong=markerlocation.longitude; toast.maketext(mapsactivity.this, mcurrlat.tostring()+ mcurrlong.tostring() , toast.length_long).show(); log.d("marker", "finished"); } @override public void onmarkerdragstart(marker arg0) { // todo auto-generated method stub log.d("marker", "started"); } }); confirmlocation.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { if(mcurrlong !=0.0 || mcurrlat !=0.0) { db.putstring("latitude", mcurrlat.tostring()); db.putstring("longitude", mcurrlong.tostring()); } else { db.putstring("latitude", string.valueof(location.getlatitude())); db.putstring("longitude", string.valueof(location.getlongitude())); } databasereference.child(currentfirebaseuser.getuid()).removevalue(); intent intent=new intent(mapsactivity.this,category.class); startactivity(intent); } }); } public static final int my_permissions_request_location = 99; private void checklocationpermission() { if (contextcompat.checkselfpermission(this, manifest.permission.access_fine_location) != packagemanager.permission_granted) { // should show explanation? if (activitycompat.shouldshowrequestpermissionrationale(this, manifest.permission.access_fine_location)) { // show explanation user *asynchronously* -- don't block // thread waiting user's response! after user // sees explanation, try again request permission. new alertdialog.builder(this) .settitle("location permission needed") .setmessage("this app needs location permission, please accept use location functionality") .setpositivebutton("ok", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialoginterface, int i) { //prompt user once explanation has been shown activitycompat.requestpermissions(mapsactivity.this, new string[]{manifest.permission.access_fine_location}, my_permissions_request_location ); } }) .create() .show(); } else { // no explanation needed, can request permission. activitycompat.requestpermissions(this, new string[]{manifest.permission.access_fine_location}, my_permissions_request_location ); } } } @override public void onrequestpermissionsresult(int requestcode, string permissions[], int[] grantresults) { switch (requestcode) { case my_permissions_request_location: { // if request cancelled, result arrays empty. if (grantresults.length > 0 && grantresults[0] == packagemanager.permission_granted) { // permission granted, yay! // location-related task need do. if (contextcompat.checkselfpermission(this, manifest.permission.access_fine_location) == packagemanager.permission_granted) { if (mgoogleapiclient == null) { buildgoogleapiclient(); } mgooglemap.setmylocationenabled(true); } } else { // permission denied, boo! disable // functionality depends on permission. toast.maketext(this, "permission denied", toast.length_long).show(); } return; } // other 'case' lines check other // permissions app might request } } } i'm beginner in maps. not working these type of applications before.
Comments
Post a Comment