Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.okedroid.googlemaps;
- import android.Manifest;
- import android.content.Context;
- import android.content.pm.PackageManager;
- import android.location.Criteria;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.location.LocationProvider;
- import android.support.v4.app.FragmentActivity;
- import android.os.Bundle;
- import android.util.Log;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.SupportMapFragment;
- import com.google.android.gms.maps.model.BitmapDescriptorFactory;
- import com.google.android.gms.maps.model.CameraPosition;
- import com.google.android.gms.maps.model.CircleOptions;
- import com.google.android.gms.maps.model.LatLng;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener {
- private GoogleMap mMap;
- private LocationManager mLocationManager = null;
- private String provider = null;
- private Marker mCurrentPosition = null;
- @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;
- mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
- if (isProviderAvailable() && (provider != null)) {
- locateCurrentPosition();
- }
- }
- private void locateCurrentPosition() {
- int status = getPackageManager().checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION,
- getPackageName());
- if (status == PackageManager.PERMISSION_GRANTED) {
- Location location = mLocationManager.getLastKnownLocation(provider);
- updateWithNewLocation(location);
- // mLocationManager.addGpsStatusListener(this);
- long minTime = 5000;// ms
- float minDist = 5.0f;// meter
- mLocationManager.requestLocationUpdates(provider, minTime, minDist,
- this);
- }
- }
- private boolean isProviderAvailable() {
- mLocationManager = (LocationManager) getSystemService(
- Context.LOCATION_SERVICE);
- Criteria criteria = new Criteria();
- criteria.setAccuracy(Criteria.ACCURACY_COARSE);
- criteria.setAltitudeRequired(false);
- criteria.setBearingRequired(false);
- criteria.setCostAllowed(true);
- criteria.setPowerRequirement(Criteria.POWER_LOW);
- provider = mLocationManager.getBestProvider(criteria, true);
- if (mLocationManager
- .isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
- provider = LocationManager.NETWORK_PROVIDER;
- return true;
- }
- if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- provider = LocationManager.GPS_PROVIDER;
- return true;
- }
- if (provider != null) {
- return true;
- }
- return false;
- }
- private void updateWithNewLocation(Location location) {
- if (location != null && provider != null) {
- double lng = location.getLongitude();
- double lat = location.getLatitude();
- addBoundaryToCurrentPosition(lat, lng);
- CameraPosition camPosition = new CameraPosition.Builder()
- .target(new LatLng(lat, lng)).zoom(10f).build();
- if (mMap != null)
- mMap.animateCamera(CameraUpdateFactory
- .newCameraPosition(camPosition));
- } else {
- Log.d("Location error", "Something went wrong");
- }
- }
- private void addBoundaryToCurrentPosition(double lat, double lang) {
- MarkerOptions mMarkerOptions = new MarkerOptions();
- mMarkerOptions.position(new LatLng(lat, lang));
- mMarkerOptions.icon(BitmapDescriptorFactory
- .fromResource(R.drawable.marker));
- mMarkerOptions.anchor(0.5f, 0.5f);
- CircleOptions mOptions = new CircleOptions()
- .center(new LatLng(lat, lang)).radius(10000)
- .strokeColor(0x110000FF).strokeWidth(1).fillColor(0x110000FF);
- mMap.addCircle(mOptions);
- if (mCurrentPosition != null)
- mCurrentPosition.remove();
- mCurrentPosition = mMap.addMarker(mMarkerOptions);
- }
- @Override
- public void onLocationChanged(Location location) {
- updateWithNewLocation(location);
- }
- @Override
- public void onProviderDisabled(String provider) {
- updateWithNewLocation(null);
- }
- @Override
- public void onProviderEnabled(String provider) {
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- switch (status) {
- case LocationProvider.OUT_OF_SERVICE:
- break;
- case LocationProvider.TEMPORARILY_UNAVAILABLE:
- break;
- case LocationProvider.AVAILABLE:
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment