안녕하세요. Google지도에서 마커를 한 위치에서 다른 위치로 업데이트하려고합니다. uber처럼 애니메이션으로 마커의 위치를 변경하고 싶습니다 & 안녕하세요. 아래 샘플 코드. 어떤 오류도 발생하지 않습니다. 나는 애니메이션을 보지 않고있다. 모든 간단한 애니메이션이 가능합니다.Android : Google지도의 한 위치에서 다른 위치로 마커를 움직일 수 없습니다.
코드
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private static int SPLASH_TIME_OUT = 5000;
@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 tilak nagar
LatLng tilkanagar = new LatLng(28.6353, 77.0971);
LatLng Firstmarker = new LatLng(28.6350, 77.0970);
LatLng FirstmarkerTo = new LatLng(28.6356, 77.0972);
LatLng Secondmarker = new LatLng(28.6345, 77.0969);
LatLng SecondmarkerTo = new LatLng(28.6347, 77.0967);
mMap.addMarker(new MarkerOptions().position(tilkanagar).title("Hello I am at Techvision"));
Marker marker = mMap.addMarker(new MarkerOptions().position(Firstmarker).title("1 Minute Away").icon(BitmapDescriptorFactory.fromResource(R.drawable.car)));
Marker marker1 = mMap.addMarker(new MarkerOptions().position(Secondmarker).title("2 Minutes Away").icon(BitmapDescriptorFactory.fromResource(R.drawable.car)));
mMap.moveCamera(CameraUpdateFactory.newLatLng(tilkanagar));
mMap.animateCamera(CameraUpdateFactory.zoomTo(18.0f));
animateMarker(marker, FirstmarkerTo, false);
animateMarker(marker1,SecondmarkerTo,false);
}
public void animateMarker(final Marker marker, final LatLng toPosition,
final boolean hideMarker) {
Thread background = new Thread() {
public void run() {
try {
// Thread will sleep for 5 seconds
sleep(5*1000);
// After 5 seconds redirect to another intent
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);
}
}
}
});
//Remove activity
finish();
} catch (Exception e) {
}
}
};
// start thread
background.start();
}
}
출력
어떤 도움들 ??? –
그게 힘들지 않다고 생각합니다 .... –