2012-11-02 13 views

Antwort

0
+0

hi sumedh, ich konnte all diese Sachen machen. Aber ich möchte benutzerdefinierte Markierungen machen, die automatisch auf Google Maps erscheinen. Genauer gesagt sollten sie so aussehen, als würden sie aus großer Höhe auf Karten fallen. Wenn die Karte geladen ist, sollten Markierungen von der Stelle in Ihrer Nähe auf die Karte fallen. – user1793188

2

prüft diese thread und diese thread

folgen zu implementieren Android verfügt über Overlay-Markierungen (siehe "ItemizedOverlay"), die das Hinzufügen von Bildern zu Karten erleichtern. Beachten Sie jedoch, dass nach meiner Erfahrung animierte Bilder nicht funktionieren, wenn sie Overlays hinzugefügt werden.

Aber um ehrlich zu sein, sollten Sie sich daran erinnern, dass es Android ist, und das Kopieren jeder kleinen Funktion von iOS ist unnötig. Google Maps auf Android verwendet keine Stiftmarkierung, es verwendet einen statischen blauen Punkt - ich würde sagen, es ist das Beste, dies zu replizieren und daran zu erinnern, dass Ihre Nutzer Android-Nutzer sind, keine iOS-Nutzer - sie wollen Konsistenz in allen Android-Apps

+0

Hallo San, nachdem ich in den ersten Thread (http://stackoverflow.com/questions/10607042/tutorial-android-map-pin-drop-animation-working-right) geschaut habe, habe ich einen Zweifel daran: hier mapOverlays. hinzufügen (itemOverlay); Ich konnte keine Funktion oder Klasse dazu finden. Was heißt das? und was soll ich hier tun? – user1793188

+0

Überprüfen Sie diese Links aus. Es ist MapOverlay. http://mobiforge.com/developing/story/using-google-maps-android https://developers.google.com/maps/documentation/android/hello-mapview – san

9

Markieren Sie die gewünschte Position in der Karte und rufen Sie diese Funktion mit dieser Markierung auf.

private void dropPinEffect(final Marker marker) { 
     final Handler handler = new Handler(); 
     final long start = SystemClock.uptimeMillis(); 
     final long duration = 1500; 

     final Interpolator interpolator = new BounceInterpolator(); 

     handler.post(new Runnable() { 
      @Override 
      public void run() { 
       long elapsed = SystemClock.uptimeMillis() - start; 
       float t = Math.max(
         1 - interpolator.getInterpolation((float) elapsed 
           /duration), 0); 
       marker.setAnchor(0.5f, 1.0f + 14 * t); 

       if (t > 0.0) { 
        // Post again 15ms later. 
        handler.postDelayed(this, 15); 
       } else { 
        marker.showInfoWindow(); 

       } 
      } 
     }); 
    } 
+0

Einfach und effektiv, vielen Dank! –

Verwandte Themen