प्रयोग DiscDev's ansrwer के लिए उदाहरण (ऊपर):
LatLng fromLocation = new LatLng(38.5, -100.4); // Whatever origin coordinates
LatLng toLocation = new LatLng(37.7, -107.7); // Whatever destination coordinates
Marker marker = mMap.addMarker(new MarkerOptions().position(firstLocation));
MarkerAnimation.animateMarkerToICS(marker, toLocation, new LatLngInterpolator.Spherical());
और आप के उन लोगों के लिए जो जीपीएस/या किसी भी स्थिति प्रदाता उस स्थान अपडेट प्राप्त उपयोग करता है:
Marker ourGlobalMarker;
// We've got a location from some provider of ours, now we can call:
private void updateMarkerPosition(Location newLocation) {
LatLng newLatLng = new LatLng(newLocation.getLatitude(), newLocation.getLongitude());
if(ourGlobalMarker == null) { // First time adding marker to map
ourGlobalMarker = mMap.addMarker(new MarkerOptions().position(newLatLng));
}
else {
MarkerAnimation.animateMarkerToICS(ourGlobalMarker, newLatLng, new LatLngInterpolator.Spherical());
}
}
महत्वपूर्ण:
1MarkerAnimation.java
के भीतर यदि एनीमेशन durat आयन एक्स, पर सेट है और आप एक्स के बाद छोटी दर में स्थान अपडेट प्राप्त कर रहे हैं, एकाधिक एनिमेशन चलेंगे, और आप मार्कर फ़्लिकर देख सकते हैं।
private static Animator animator; // MAKING ANIMATOR GLOBAL INSTEAD OF LOCAL TO THE STATIC FUNCTION
...
// Ice Cream Sandwich compatible
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public static void animateMarkerToICS(Marker marker, LatLng finalPosition, final LatLngInterpolator latLngInterpolator) {
TypeEvaluator<LatLng> typeEvaluator = new TypeEvaluator<LatLng>() {
@Override
public LatLng evaluate(float fraction, LatLng startValue, LatLng endValue) {
return latLngInterpolator.interpolate(fraction, startValue, endValue);
}
};
Property<Marker, LatLng> property = Property.of(Marker.class, LatLng.class, "position");
// ADD THIS TO STOP ANIMATION IF ALREADY ANIMATING TO AN OBSOLETE LOCATION
if(animator != null && animator.isRunning()) {
animator.cancel();
animator = null;
}
animator = ObjectAnimator.ofObject(marker, property, typeEvaluator, finalPosition);
animator.setDuration((long) ANIMATION_DURATION);
animator.start();
}
आनंद लें:
इससे बचने के लिए, animationMarkerToICS
विधि (मैं यहाँ उदाहरण के लिए animationMarkerToICS
लिया), कुछ इस तरह,
पूर्ण विधि कार्यान्वयन दिखना चाहिए।
संभावित [डुप्लिकेट] (http://stackoverflow.com/questions/13972401/google-map-v2-marker-animation)? यदि आपके द्वारा चुने गए समाधान में, आपको लंबी अवधि में अंतरण करने की आवश्यकता होगी, 180 वें मेरिडियन में साइन फ़्लिपिंग पर ध्यान दें। – hleinone
@ हेलिनोन काफी नहीं है। जिस व्यक्ति का आपने उल्लेख किया है उसके लिए समाधान है) कैमरे को ले जाना बी) एक मार्कर को एक अलग स्थिति में ले जाना। मुझे बी की आवश्यकता है) और यह बस Marker.setPosition() कर कर किया जा सकता है। हालांकि, मार्कर का एक आइकन बदलना (मैं आंदोलन की दिशा के साथ घूर्णन छवि दिखाऊंगा) काम नहीं करता है। ऐसा लगता है कि आइकन बदलने के लिए मानचित्र से सभी मार्करों को साफ़ करने की आवश्यकता है। –
पॉलीलाइन मार्गों को एनिमेट करने के लिए https://github.com/amalChandran/google-maps-route-animation – amalBit