Created
April 22, 2016 11:29
-
-
Save rahulupadhyay/95803293c9afae2b24805b09d893bc6d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Override | |
public void onConnected(@Nullable Bundle bundle) { | |
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; | |
} | |
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); | |
if (location == null) { | |
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); | |
} else { | |
//If everything went fine lets get latitude and longitude | |
currentLatitude = location.getLatitude(); | |
currentLongitude = location.getLongitude(); | |
Toast.makeText(this, currentLatitude + " WORKS " + currentLongitude + "", Toast.LENGTH_LONG).show(); | |
marker = mMap.addMarker(new MarkerOptions().position(new LatLng(currentLatitude,currentLongitude)).title("Current Location")); | |
CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(currentLatitude,currentLongitude)).zoom(14.0f).build(); | |
CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition); | |
mMap.moveCamera(cameraUpdate); | |
runnable.run(); | |
} | |
} | |
@Override | |
public void onLocationChanged(Location location) { | |
currentLatitude = location.getLatitude(); | |
currentLongitude = location.getLongitude(); | |
Toast.makeText(this, currentLatitude + " WORKS " + currentLongitude + "", Toast.LENGTH_LONG).show(); | |
// TODO : Animate your marker to this new latlong of device | |
// animateMarker(marker,new LatLng(currentLatitude,currentLongitude),false); | |
} | |
public void animateMarker(final Marker marker, final LatLng toPosition, | |
final boolean hideMarker) { | |
final Handler handler = new Handler(); | |
final long start = SystemClock.uptimeMillis(); | |
Projection proj = mMap.getProjection(); | |
Point startPoint = proj.toScreenLocation(marker.getPosition()); | |
final LatLng startLatLng = proj.fromScreenLocation(startPoint); | |
final long duration = 500; | |
final Interpolator interpolator = new LinearInterpolator(); | |
handler.post(new Runnable() { | |
@Override | |
public void run() { | |
long elapsed = SystemClock.uptimeMillis() - start; | |
float t = interpolator.getInterpolation((float) elapsed | |
/ duration); | |
double lng = t * toPosition.longitude + (1 - t) | |
* startLatLng.longitude; | |
double lat = t * toPosition.latitude + (1 - t) | |
* startLatLng.latitude; | |
marker.setPosition(new LatLng(lat, lng)); | |
if (t < 1.0) { | |
// Post again 16ms later. | |
handler.postDelayed(this, 16); | |
} else { | |
if (hideMarker) { | |
marker.setVisible(false); | |
} else { | |
marker.setVisible(true); | |
} | |
} | |
} | |
}); | |
} |
Author
rahulupadhyay
commented
Apr 22, 2016
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment