Android Studio : fetching GPS coordinates of the current marker location in Google Maps

匿名 (未验证) 提交于 2019-12-03 01:54:01

问题:

I have the following that needs to be included into an Android application, I'm hoping someone could provide some coding samples to illustrate what exactly I'm attempting to achieve here.

  • The Android App has a Google Maps interface on the screen.

  • User of the App can browse through the opened Google Map interface and select a particular location.

  • I want to fetch the GPS coordinates of this location.

Thanks in advance!!

回答1:

Here, Answer. It's working fine. I also found this solution from stack overflow with some problem. But now all resolved and code work well.

Add Permission to manifest AndroidManifest.xml

activity_main.xml

 

MainActivity.java

import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast;  public class MainActivity extends AppCompatActivity {       Button btnShowLocation;      // GPSTracker class     GPSTracker gps;       @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         btnShowLocation = (Button) findViewById(R.id.btnShowLocation);          // Show location button click event         btnShowLocation.setOnClickListener(new View.OnClickListener() {              @Override             public void onClick(View arg0) {                 // Create class object                 gps = new GPSTracker(MainActivity.this);                  // Check if GPS enabled                 if(gps.canGetLocation()) {                          double latitude = gps.getLatitude();                         double longitude = gps.getLongitude();                      // \n is for new line                     Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();                  } else {                     // Can't get location.                     // GPS or network is not enabled.                     // Ask user to enable GPS/network in settings.                     gps.showSettingsAlert();                 }             }         });      }      }

GPSTracker.java

import android.Manifest;         import android.app.AlertDialog;         import android.app.Service;         import android.content.Context;         import android.content.DialogInterface;         import android.content.Intent;         import android.content.pm.PackageManager;         import android.location.Location;         import android.location.LocationListener;         import android.location.LocationManager;         import android.os.Bundle;         import android.os.IBinder;         import android.provider.Settings;         import android.support.v4.app.ActivityCompat;    public class GPSTracker extends Service implements LocationListener {      private final Context mContext;      // flag for GPS status     boolean isGPSEnabled = false;      // flag for network status     boolean isNetworkEnabled = false;      // flag for GPS status     boolean canGetLocation = false;      Location location; // location     double latitude; // latitude     double longitude; // longitude      // The minimum distance to change Updates in meters     private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters      // The minimum time between updates in milliseconds     private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute      // Declaring a Location Manager     protected LocationManager locationManager;      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 is 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 get 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) {                             if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {                                 // TODO: Consider calling                                 //    ActivityCompat#requestPermissions                                 // here to request the missing permissions, and then overriding                                 //   public void onRequestPermissionsResult(int requestCode, String[] permissions,                                 //                                          int[] grantResults)                                 // to handle the case where the user grants the permission. See the documentation                                 // for ActivityCompat#requestPermissions for more details.                                 //return TODO;                             }                             location = locationManager                                     .getLastKnownLocation(LocationManager.GPS_PROVIDER);                             if (location != null) {                                 latitude = location.getLatitude();                                 longitude = location.getLongitude();                             }                         }                     }                 }             }          } catch (Exception e) {         }         return location;     }      /**      * Stop using GPS listener Calling this function will stop using GPS in your      * app.      * */     public void stopUsingGPS() {         if (locationManager != null) {             if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {                 // TODO: Consider calling                 //    ActivityCompat#requestPermissions                 // here to request the missing permissions, and then overriding                 //   public void onRequestPermissionsResult(int requestCode, String[] permissions,                 //                                          int[] grantResults)                 // to handle the case where the user grants the permission. See the documentation                 // for ActivityCompat#requestPermissions for more details.                 return;             }             locationManager.removeUpdates(GPSTracker.this);         }     }      /**      * Function to get latitude      * */     public double getLatitude() {         if (location != null) {             latitude = location.getLatitude();         }         // return latitude         return latitude;     }      /**      * Function to get longitude      * */     public double getLongitude() {         if (location != null) {             longitude = location.getLongitude();         }          // return longitude         return longitude;     }      /**      * Function to check GPS/wifi enabled      *      * @return boolean      * */     public boolean canGetLocation() {         return this.canGetLocation;     }      /**      * Function to show settings alert dialog On pressing Settings button will      * lauch Settings Options      * */     public void showSettingsAlert() {         AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);          // Setting DialogHelp Title         alertDialog.setTitle("GPS is settings");          // Setting DialogHelp Message         alertDialog                 .setMessage("GPS is not enabled. Do you want to go to 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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!