Добавление и сохранение маркера в Google maps android
Всем привет,
Я новичок в android, и я хочу сделать приложение, которое получает местоположение моего устройства (мобильного телефона), и на моей пользовательской карте оно должно показывать маркер (точно так же, как оно показывает мое местоположение, когда мы открываем официальную карту google), а после выхода/перезапуска приложения оно должно сохранить мой последний (посещенный) маркер местоположения на самой карте.
Я приложил свой код
Что он делает : он получит местоположение устройства(
Latitude and Longitude) и поставьте маркер на пользовательскую карту Google.
Но
когда он не сохраняет мой маркер/местоположение на карте
Пожалуйста Помогите
Что я уже пробовал:
Мой код до сих пор в Android Studio
<pre>public class MapActivity extends AppCompatActivity implements OnMapReadyCallback { private static final String TAG = "MapActivity"; private GoogleMap mMap; LocationManager locationManager; DatabaseHelper myDB; private FusedLocationProviderClient mFusedLocationProviderClient; private Boolean mLocationPermissionGranted = false; private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234; private static final String FINE_LOCATION = android.Manifest.permission.ACCESS_FINE_LOCATION; private static final String COARSE_LOCATION = android.Manifest.permission.ACCESS_COARSE_LOCATION; private static final float DEFAULT_ZOOM = 15f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); getLocationPermission(); } private void getLocationPermission() { Log.d(TAG, "getLocationPermission: getting location permission"); String[] permission = {android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}; if (ContextCompat.checkSelfPermission(this.getApplicationContext(), FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { if (ContextCompat.checkSelfPermission(this.getApplicationContext(), COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mLocationPermissionGranted = true; initMap(); } else { ActivityCompat.requestPermissions(this, permission, LOCATION_PERMISSION_REQUEST_CODE); } } else { ActivityCompat.requestPermissions(this, permission, LOCATION_PERMISSION_REQUEST_CODE); } } private void initMap() { Log.d(TAG, "initMap: initilizing map"); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(MapActivity.this); } @Override public void onMapReady(GoogleMap googleMap) { Toast.makeText(this, "Map is Ready", Toast.LENGTH_SHORT).show(); Log.d(TAG, "onMapReady: Map is Ready"); mMap = googleMap; if (mLocationPermissionGranted) { getDeviceLocation(); if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } mMap.setMyLocationEnabled(true); } } private void getDeviceLocation() { Log.d(TAG, "getDeviceLocation: getting the device current location"); mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this); try { if (mLocationPermissionGranted) { Task location = mFusedLocationProviderClient.getLastLocation(); location.addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { Log.d(TAG, "onComplete: Found location"); Location currentLocation = (Location)task.getResult(); if(currentLocation !=null) { moveCamera(new LatLng(currentLocation.getLatitude(),currentLocation.getLongitude()), DEFAULT_ZOOM,"Updated"); } } else { Log.d(TAG, "onComplete: Current location is null"); Toast.makeText(MapActivity.this, " unable to get current location", Toast.LENGTH_SHORT).show(); } } }); } } catch (SecurityException e) { Log.e(TAG, "getDeviceLocation: SecurityException" + e.getMessage()); } } private void moveCamera(LatLng latLng, float zoom, String title) { Log.d(TAG, "moveCamera: Moving camera to Latitude: "+latLng.latitude + ", Longitude :"+latLng.longitude); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom)); MarkerOptions options = new MarkerOptions().position(latLng).title(title); mMap.addMarker(options); HideSoftKeyboard(); } private void HideSoftKeyboard() { this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); } }