Skip to content

Instantly share code, notes, and snippets.

@mdakram
Forked from melwinm/gist:8383925
Last active August 29, 2015 14:08
Show Gist options
  • Save mdakram/4ec25b8520dbf319ee4f to your computer and use it in GitHub Desktop.
Save mdakram/4ec25b8520dbf319ee4f to your computer and use it in GitHub Desktop.
package com.example.maptest;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import org.osmdroid.DefaultResourceProxyImpl;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.ItemizedIconOverlay;
import org.osmdroid.views.overlay.OverlayItem;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
public class MainActivity extends Activity {
private static final float DUMMY_LAT = 20.60636f;
private static final float DUMMY_LON = 8.13008f;
public static final int PULSE_INTERVAL = 20;
public static final int PULSE_SPEED = 100;
private OverlayItem overlayItem;
private MapView osmMapView;
private ItemizedIconOverlay<OverlayItem> overlayIcon;
private boolean alphaDirection;
private int currentOverlayAlpha;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
osmMapView = new MapView(this, 256);
GeoPoint dummyGeoPoint = new GeoPoint(DUMMY_LAT, DUMMY_LON);
osmMapView.getController().setCenter(dummyGeoPoint);
Drawable overlayDrawable = getResources().getDrawable(R.drawable.person);
final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
overlayItem = new OverlayItem("title", "description", dummyGeoPoint);
overlayItem.setMarker(overlayDrawable);
items.add(overlayItem);
overlayIcon = new ItemizedIconOverlay<OverlayItem>(items, null, new DefaultResourceProxyImpl(getBaseContext()));
osmMapView.getOverlays().add(overlayIcon);
addContentView(osmMapView, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
Timer timer = new Timer();
alphaDirection = true;
currentOverlayAlpha = 0;
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (currentOverlayAlpha > 255) {
currentOverlayAlpha = 255;
alphaDirection = !alphaDirection;
} else if (currentOverlayAlpha < 0) {
currentOverlayAlpha = 0;
alphaDirection = !alphaDirection;
}
// first remove the current overlay icon from map view
osmMapView.getOverlays().remove(overlayIcon);
osmMapView.invalidate();
// set the new alpha to the overlayDrawable
Drawable overlayDrawable = overlayItem.getDrawable();
overlayDrawable.setAlpha(currentOverlayAlpha);
overlayItem.setMarker(overlayDrawable);
// add the overlay item with the new alpha to map view
overlayIcon.removeAllItems();
overlayIcon.addItem(overlayItem);
osmMapView.getOverlays().add(overlayIcon);
if (alphaDirection) {
currentOverlayAlpha += PULSE_INTERVAL;
} else {
currentOverlayAlpha -= PULSE_INTERVAL;
}
}
});
}
}, PULSE_SPEED, PULSE_SPEED);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment