Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to implement Drop pin animation in android using google maps?
    primarykey
    data
    text
    <p>I want to implement dropping pins animation to markers as the one in iPhone. The problem is pins are not dropping the way they should as they are in this link : <a href="http://googlegeodevelopers.blogspot.com/2010/12/map-markers-they-move.html" rel="nofollow">http://googlegeodevelopers.blogspot.com/2010/12/map-markers-they-move.html</a> . I've added the code of my example. Please help in implementing the animation.</p> <pre><code>public class MyMapAnimation extends MapActivity { private MapView map = null; private MyLocationOverlay me = null; ImageView imageView = null; Projection proj = null; private Drawable marker; private ArrayList&lt;OverlayItem&gt; itemsArrayList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("NooYawk","onCreate"); itemsArrayList = new ArrayList&lt;OverlayItem&gt;(); itemsArrayList.add(new OverlayItem(getPoint(40.748963847316034, -73.96807193756104), "UN", "United Nations")); itemsArrayList.add(new OverlayItem(getPoint(40.76866299974387, -73.98268461227417), "Lincoln Center", "Home of Jazz at Lincoln Center")); itemsArrayList.add(new OverlayItem(getPoint(40.765136435316755, -73.97989511489868), "Carnegie Hall", "Where you go with practice, practice, practice")); itemsArrayList.add(new OverlayItem(getPoint(40.70686417491799, -74.01572942733765), "The Downtown Club", "Original home of the Heisman Trophy")); map = (MapView) findViewById(R.id.map); map.getController().setCenter(getPoint(40.748963847316034, -73.96807193756104)); /* map.getController().setCenter( getPoint(40.748963847316034, -73.96807193756104));*/ map.getController().setZoom(12); map.setBuiltInZoomControls(true); marker = getResources().getDrawable(R.drawable.marker); proj = map.getProjection(); imageView = new ImageView(this); imageView.setBackgroundResource(R.drawable.marker); marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); map.getOverlays().add(new SitesOverlay(marker)); me = new MyLocationOverlay(this, map); map.getOverlays().add(me); /* * map.getController().animateTo( getPoint(40.748963847316034, * -73.96807193756104)); */ } @Override public void onResume() { super.onResume(); me.enableCompass(); Log.i("NooYawk","onResume"); } @Override public void onPause() { super.onPause(); Log.i("NooYawk","onPause"); me.disableCompass(); } @Override protected boolean isRouteDisplayed() { Log.i("NooYawk","isRouteDisplayed"); return (false); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_S) { map.setSatellite(!map.isSatellite()); return (true); } else if (keyCode == KeyEvent.KEYCODE_Z) { map.displayZoomControls(true); return (true); } return (super.onKeyDown(keyCode, event)); } private GeoPoint getPoint(double lat, double lon) { Log.i("NooYawk","getPoint"); return (new GeoPoint((int) (lat * 1000000.0), (int) (lon * 1000000.0))); } private class SitesOverlay extends ItemizedOverlay&lt;OverlayItem&gt; { private List&lt;OverlayItem&gt; items = new ArrayList&lt;OverlayItem&gt;(); private Drawable marker = null; private OverlayItem inDrag = null; private ImageView dragImage = null; private int xDragImageOffset = 0; private int yDragImageOffset = 0; private int xDragTouchOffset = 0; private int yDragTouchOffset = 0; Point p = new Point(0, 0); private RelativeLayout relativeLayout; private ArrayList&lt;ImageView&gt; imageViewArrayList; public SitesOverlay(Drawable marker) { super(marker); this.marker = marker; Log.i("NooYawk","SitesOverlay"); dragImage = (ImageView) findViewById(R.id.drag); Log.d("POint", "" + (map.getProjection().toPixels( getPoint(40.748963847316034, -73.96807193756104), p).x) + "," + (map.getProjection().toPixels( getPoint(40.748963847316034, -73.96807193756104), p).y)); TranslateAnimation translateAnimation = null; imageViewArrayList = new ArrayList&lt;ImageView&gt;(); for (OverlayItem currentOverlayItem : itemsArrayList) { Log.i("NooYawk","currentOverlayItem"); imageView = new ImageView(NooYawk.this); imageView.setBackgroundResource(R.drawable.marker); relativeLayout = (RelativeLayout) findViewById(R.id.rl_map_main); RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); param.leftMargin = getWindowManager().getDefaultDisplay() .getWidth() / 2; param.topMargin = 0; relativeLayout.addView(imageView, param); imageViewArrayList.add(imageView); } int count = 0; Log.i("x for translate before animation", (map.getProjection().toPixels( itemsArrayList.get(0).getPoint(), p).x)+""); for (ImageView currentImageView : imageViewArrayList) { Log.i("NooYawk","currentImageView"); translateAnimation = new TranslateAnimation((map .getProjection().toPixels( itemsArrayList.get(count).getPoint(), p).x), (map.getProjection().toPixels( itemsArrayList.get(count).getPoint(), p).x), 0, (map.getProjection().toPixels( itemsArrayList.get(count).getPoint(), p).y)); translateAnimation.setDuration(2000); currentImageView.startAnimation(translateAnimation); count++; } new Handler().postDelayed(new Runnable() { @Override public void run() { Log.i("NooYawk","run"); // relativeLayout.removeView(imageView); for (ImageView currentImageView : imageViewArrayList) { Log.i("NooYawk","thread : currentImageView"); currentImageView.setVisibility(View.INVISIBLE); } setItemValues(); populate(); Log.i("x for translate after animation", (map.getProjection().toPixels( itemsArrayList.get(0).getPoint(), p).x)+""); } }, translateAnimation.getDuration()); } private void setItemValues() { int count = 0; Log.i("NooYawk","setItemVAlues"); for (OverlayItem currentOverlayItem : itemsArrayList) { items.add(currentOverlayItem); Log.i("items ", items.get(count).getPoint()+""); count++; } } @Override protected OverlayItem createItem(int i) { Log.i("NooYawk","createitem"); return (items.get(i)); } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); // items.get(0) Log.i("NooYawk","draw"); boundCenterBottom(marker); } @Override public int size() { Log.i("NooYawk","size"); return (items.size()); } } </code></pre> <p>}</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload