How to change the position of a Marker on a Android Map v2

前端 未结 4 1126
-上瘾入骨i
-上瘾入骨i 2020-12-08 07:05

I need to do the following: I have a Marker on the map and I need to change the position of it. So I tried the following:

MarkerOptions a = new MarkerOptions         


        
相关标签:
4条回答
  • 2020-12-08 07:56

    Most of the answers on StackOverflow suggest using remove() to remove the marker and then create a new one using addMarker . Instead of doing that, simply save the marker once in a Marker type variable and then update its location.

    MarkerOptions a = new MarkerOptions().position(new LatLng(50,6))); 
    myMarker = mGoogleMap.addMarker(a);
    

    And then instead of removing and re-creating a marker, simply use

    myMarker.setPosition(newLatLng);  
    

    Hope this helps !!

    0 讨论(0)
  • 2020-12-08 07:58

    Found the solution, Need to do it like this:

    MarkerOptions a = new MarkerOptions()
        .position(new LatLng(50,6)));
    Marker m = map.addMarker(a);
    m.setPosition(new LatLng(50,5));
    
    0 讨论(0)
  • 2020-12-08 07:59

    Define "marker" outside the function. for the first time, it will be null and "if" condition will be executed. for the second time "else" will be executed.

            Marker marker = null;    
            protected void onPostExecute(Coordinates coordinates) {
            LatLng latLong = new LatLng("lat", "long");
            if (marker == null) {
                MarkerOptions options = new MarkerOptions().position(latLong)
                        .title("Marker Title");
                marker = mMap.addMarker(options);
            }
            else {
                marker.setPosition(latLong);
            }
         mMap.moveCamera(CameraUpdateFactory.newLatLng(latLong));
         mMap.animateCamera(CameraUpdateFactory.zoomTo(16f));
        }
    
    0 讨论(0)
  • 2020-12-08 08:01

    There's one example of moving marker in google map v2 demo app .. In file adt-bundle-linux/sdk/extras/google/google_play_services/samples/maps/src/com/exa‌​mple/mapdemo/MarkerDemoActivity.java (4.2.2 examples)

    Here the code for moving a marker:

    public void animateMarker(final Marker marker, final LatLng toPosition, final boolean hideMarker) {
        final Handler handler = new Handler();
        final long start = SystemClock.uptimeMillis();
        Projection proj = mGoogleMapObject.getProjection();
        Point startPoint = proj.toScreenLocation(marker.getPosition());
        final LatLng startLatLng = proj.fromScreenLocation(startPoint);
        final long duration = 500;
    
        final Interpolator interpolator = new LinearInterpolator();
    
        handler.post(new Runnable() {
            @Override
            public void run() {
                long elapsed = SystemClock.uptimeMillis() - start;
                float t = interpolator.getInterpolation((float) elapsed
                        / duration);
                double lng = t * toPosition.longitude + (1 - t)
                        * startLatLng.longitude;
                double lat = t * toPosition.latitude + (1 - t)
                        * startLatLng.latitude;
                marker.setPosition(new LatLng(lat, lng));
    
                if (t < 1.0) {
                    // Post again 16ms later.
                    handler.postDelayed(this, 16);
                } else {
                    if (hideMarker) {
                        marker.setVisible(false);
                    } else {
                        marker.setVisible(true);
                    }
                }
            }
        });
    }
    

    This code will animate the marker from one geopoint to another.

    0 讨论(0)
提交回复
热议问题