Как добавить текущее местоположение в мою активность на карте? - PullRequest
0 голосов
/ 02 марта 2019

У меня есть активность с mapView.В настоящее время я могу добавить местоположение исправления, добавив в код соответствующие long и lat.

Я бы хотел, чтобы приложение заменило эти long и lat на мою текущую позицию.

Я пробовал много разных способов, но я не могу понять, как это сделать.

Мой код выглядит следующим образом:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

GoogleMap mMap

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}


@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Copenhagen and move the camera
    LatLng Copenhagen = new LatLng(55.67594 , 12.56553);
    mMap.addMarker(new MarkerOptions().position(Copenhagen).title("Marker in CBS"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(Copenhagen));

    //zoom to position with level 15
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(Copenhagen, 15);
    googleMap.animateCamera(cameraUpdate);
  }
}

1 Ответ

0 голосов
/ 02 марта 2019

используйте этот код, чтобы сначала получить ваше текущее местоположение:

public void getCurrentLocation() {
        if (isPermisionAccess()) {
            locationManager = (LocationManager) mActivity.getSystemService(LOCATION_SERVICE);
            if (locationManager != null) {
                Location gpsLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                Location netLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                if (gpsLocation != null) {
                    currentlatitude = gpsLocation.getLatitude();
                    currentlongitude = gpsLocation.getLongitude();
                } else if (netLocation != null) {
                    currentlatitude = netLocation.getLatitude();
                    currentlongitude = netLocation.getLongitude();

                }
            }
        }

    }

private boolean isPermisionAccess() {
        return (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED);
    }

, затем:

// Add a marker in myLocation and move the camera
LatLng myLocation = new LatLng(currentlatitude  , currentlongitude );
mMap.addMarker(myLocation).title("Marker in CBS"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(myLocation ));

//zoom to position with level 15
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(myLocation , 15);
googleMap.animateCamera(cameraUpdate);

и не забывайте, что:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
...