package com.openvehicles.OVMS; import android.content.Context; import android.graphics.Canvas; import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.location.Location; import android.os.Handler; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapView; import com.google.android.maps.MyLocationOverlay; public class MyLocationOverlayCustom extends MyLocationOverlay { private Handler handler = new Handler(); private Drawable locationMarker; private final MapView mapView; private Runnable overlayAnimationTask; private Point point = new Point(); private Rect rect = new Rect(); private Location savedFix = null; public MyLocationOverlayCustom(Context paramContext, MapView paramMapView) { super(paramContext, paramMapView); this.mapView = paramMapView; this.locationMarker = paramContext.getResources().getDrawable( 2130837572); this.overlayAnimationTask = new Runnable() { public void run() { MyLocationOverlayCustom.this.mapView.invalidate(); MyLocationOverlayCustom.this.handler .removeCallbacks(MyLocationOverlayCustom.this.overlayAnimationTask); MyLocationOverlayCustom.this.handler.postDelayed( MyLocationOverlayCustom.this.overlayAnimationTask, 1000L); } }; this.handler.removeCallbacks(this.overlayAnimationTask); this.handler.postAtTime(this.overlayAnimationTask, 100L); } protected void drawMyLocation(Canvas paramCanvas, MapView paramMapView, Location paramLocation, GeoPoint paramGeoPoint, long paramLong) { paramMapView.getProjection().toPixels(paramGeoPoint, this.point); this.rect.left = (this.point.x - this.locationMarker .getIntrinsicWidth() / 2); this.rect.top = (this.point.y - this.locationMarker .getIntrinsicHeight() / 2); this.rect.right = (this.point.x + this.locationMarker .getIntrinsicWidth() / 2); this.rect.bottom = (this.point.y + this.locationMarker .getIntrinsicHeight() / 2); this.locationMarker.setBounds(this.rect); this.locationMarker.draw(paramCanvas); } }