@Override public void onMapReady(final GoogleMap googleMap) {
mMap = googleMap;
final LatLng SomePos = new LatLng(37.52487, 126.92723); // 시작 지점
try { googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); // 지도 타입 googleMap.setMyLocationEnabled(true); // 내 위치 표시 googleMap.setTrafficEnabled(false); // 교통정보 레이어 googleMap.setIndoorEnabled(false); // 실내 지도 여부. 향후 normal 지도 유형에서만 지원 예정 googleMap.setBuildingsEnabled(true); // 건물 표시 googleMap.getUiSettings().setZoomControlsEnabled(true); // 줌 컨트롤러 표시 (확대, 축소) googleMap.moveCamera(CameraUpdateFactory.newLatLng(SomePos)); googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder() .target(googleMap.getCameraPosition().target) .zoom(17) .bearing(30) // 지도를 돌려서 보기 (각도) .tilt(45) // 지도를 눞여서 보기 (각도) .build()));
// 마커 이미지 및 사이즈 변경 int height = 200; int width = 200; BitmapDrawable bitmapdraw = (BitmapDrawable)getResources().getDrawable(R.drawable.img_marker); Bitmap b = bitmapdraw.getBitmap(); Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);
final Marker myMarker = googleMap.addMarker(new MarkerOptions() .position(SomePos) .icon(BitmapDescriptorFactory.fromBitmap(smallMarker)) .title("Hello world"));
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker arg0) {
final LatLng startPosition = myMarker.getPosition(); final LatLng finalPosition = new LatLng(37.62487, 127.02723); // 끝 지점 final Handler handler = new Handler(); final long start = SystemClock.uptimeMillis(); // AccelerateDecelerateInterpolator 는 마커 이동 유형 (움직이는 스타일) //final Interpolator interpolator = new AccelerateDecelerateInterpolator(); final float durationInMs = 4000; // 이동 시간 (ms)
handler.post(new Runnable() { long elapsed; float t;
@Override public void run() { // Calculate progress using interpolator elapsed = SystemClock.uptimeMillis() - start; t = elapsed / durationInMs;
LatLng currentPosition = new LatLng( startPosition.latitude * (1 - t) + finalPosition.latitude * t, startPosition.longitude * (1 - t) + finalPosition.longitude * t);
myMarker.setPosition(currentPosition);
// Repeat till progress is complete. if (t < 1) { // Post again 16ms later. handler.postDelayed(this, 16); } } }); return true; } });
} catch (Exception e) { e.printStackTrace(); }
} |