2017-04-05 3 views
0

Ich stehe vor einer echten Herausforderung, die ich hoffe, Sie können mir helfen, herauszufinden. Ich erstelle eine Polylinie für gegebene Positionsobjekte, und was ich tun möchte, ist, eine benutzerdefinierte Markierung in den Ursprung zu legen und sie durch die Polylinie zu bewegen, nicht unbedingt eine Position zu verfolgen, sondern einfach über die Polylinie zu fahren .Marker bewegt sich durch Polylinie in Mapbox

Mein erster Schritt war ein ObjectAnimation-Objekt zu erstellen und es in einer Linie von einem Marker zum anderen zu bewegen, aber ich bin nicht herauszufinden, wie kann ich es entlang meiner Polylinie und nicht in einer Linie bewegen.

Vielen Dank im Voraus, und weitere Informationen, die Sie brauchen, um das Problem zu klären, ich sehe dieses Thema zu jeder Zeit!

+0

versuchen, wenn dieser Beitrag kann Ihnen helfen, [link] (http://stackoverflow.com/questions/40526350/how-to-move-marker-along-polyline-using-google-map/40686476) – ADimaano

Antwort

0

Wir haben ein example for this

Sie bei der Verwendung eines Objekts Animator richtig sind, dann müssen Sie auch die Verwendung einer Behandlungsroutine, die Position zu aktualisieren zu halten machen.

// Animating the marker requires the use of both the ValueAnimator and a handler. 
    // The ValueAnimator is used to move the marker between the GeoJSON points, this is 
    // done linearly. The handler is used to move the marker along the GeoJSON points. 
    handler = new Handler(); 
    runnable = new Runnable() { 
     @Override 
     public void run() { 

     // Check if we are at the end of the points list, if so we want to stop using 
     // the handler. 
     if ((points.size() - 1) > count) { 

      // Calculating the distance is done between the current point and next. 
      // This gives us the duration we will need to execute the ValueAnimator. 
      // Multiplying by ten is done to slow down the marker speed. Adjusting 
      // this value will result in the marker traversing faster or slower along 
      // the line 
      distance = (long) marker.getPosition().distanceTo(points.get(count)) * 10; 

      // animate the marker from it's current position to the next point in the 
      // points list. 
      ValueAnimator markerAnimator = ObjectAnimator.ofObject(marker, "position", 
       new LatLngEvaluator(), marker.getPosition(), points.get(count)); 
      markerAnimator.setDuration(distance); 
      markerAnimator.setInterpolator(new LinearInterpolator()); 
      markerAnimator.start(); 

      // This line will make sure the marker appears when it is being animated 
      // and starts outside the current user view. Without this, the user must 
      // intentionally execute a gesture before the view marker reappears on 
      // the map. 
      map.getMarkerViewManager().update(); 

      // Keeping the current point count we are on. 
      count++; 

      // Once we finish we need to repeat the entire process by executing the 
      // handler again once the ValueAnimator is finished. 
      handler.postDelayed(this, distance); 
     } 
     } 
    }; 
    handler.post(runnable);