मेरे आवेदन में एक बिंदु से दूसरे बिंदु पर एक चिकनी "चाल" Google मानचित्र मार्कर प्रदर्शित करने की आवश्यकता है।Google नक्शे v2 में मार्कर को सुचारु रूप से स्थानांतरित करने के लिए कैसे सही करें?
public void animateMarker(final Marker marker, final LatLng toPosition,
final boolean hideMarker) {
final Handler handler = new Handler();
final long start = SystemClock.uptimeMillis();
Projection proj = mMap.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);
}
}
}
});
}
लेकिन बस नए स्थान पर एक नया मार्कर बनाने का एक परिणाम के रूप में (हालांकि वर्ष नहीं हटाया जाता है): मैं निम्न विधि एनीमेशन के लिए उपयोग
मुझे लगता है कि आपको एक स्थिति बदलने के बाद, और प्रतीक्षा करने से पहले दृश्य को फिर से लिखने की आवश्यकता है। – kaho
क्या आपका मतलब एक डिलीट मार्कर था और नई स्थिति के साथ नया जोड़ना था? – Rexhaif
जहां तक मेरी समझ है, संसाधनों को सहेजने के लिए, एंड्रॉइड स्क्रीन को तब तक नहीं खींचता जब तक कि आपका लूप खत्म न हो ... इसलिए आपको उस सिस्टम को बताना होगा कि आप स्क्रीन को फिर से लेना चाहते हैं। ऐसा लगता है कि इससे मदद मिलेगी: http://developer.android.com/reference/android/view/View.html#invalidate(android.graphics.Rect) – kaho