Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does one implement drag and drop for Android marker?

Hi? I am working on a MapView app in Android. I have three markers that I want to be able to use the Google Map API getlocation-function on, later on. In order to try it out I would like to move the marker with a drag and drop-function, and then check the location.

Anyone who has gotten a drag and drop to work on an android marker, or know a way to start figuring it out?

/AK

like image 319
kakka47 Avatar asked Oct 09 '10 18:10

kakka47


People also ask

How do I drag a marker on Google Maps Android?

Long press the marker to enable dragging. When you take your finger off the screen, the marker will remain in that position. Markers are not draggable by default. You must explicitly set the marker to be draggable either with MarkerOptions.

How do you drag a marker on Google Maps?

You can allow users to move a marker on the map by setting the marker's draggable property to true . For more information about draggable markers, see below.


2 Answers

Implement Google Maps Android API v2, refer this: https://developers.google.com/maps/documentation/android/ and set on GoogleMap object setOnMarkerDragListener. For Ex:

map.setOnMarkerDragListener(new OnMarkerDragListener() {         @Override         public void onMarkerDragStart(Marker arg0) {             // TODO Auto-generated method stub             Log.d("System out", "onMarkerDragStart..."+arg0.getPosition().latitude+"..."+arg0.getPosition().longitude);         }          @SuppressWarnings("unchecked")         @Override         public void onMarkerDragEnd(Marker arg0) {             // TODO Auto-generated method stub             Log.d("System out", "onMarkerDragEnd..."+arg0.getPosition().latitude+"..."+arg0.getPosition().longitude);              map.animateCamera(CameraUpdateFactory.newLatLng(arg0.getPosition()));         }          @Override         public void onMarkerDrag(Marker arg0) {             // TODO Auto-generated method stub             Log.i("System out", "onMarkerDrag...");         }     });  //Don't forget to Set draggable(true) to marker, if this not set marker does not drag.  map.addMarker(new MarkerOptions()     .position(crntLocationLatLng)     .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_my_location))     .draggable(true)); 
like image 81
UrMi Avatar answered Sep 25 '22 07:09

UrMi


Here is a sample project from one of my books showing drag-and-drop movement of markers on a Google Map in Android.

In a nutshell, it uses onTouchEvent() to detect when the user touches and holds their finger near a marker. It then removes the marker from the overlay, but puts the same image over top of the map using RelativeLayout. Then, on "move" touch events, the image is moved (faster than forcing the whole overlay to redraw). When the finger is lifted, the image is removed, but the marker is put back in the overlay at the new spot.

like image 44
CommonsWare Avatar answered Sep 24 '22 07:09

CommonsWare