दिलचस्प पोस्ट
मैं मोबाइल वेब पेज पर "अक्षम" कैसे ज़ूम कर सकता हूं? जावास्क्रिप्ट के साथ एक तत्व का वर्ग बदलें लिनक्स में आईफोन ऐप डेवलपमेंट शुरू करना? आईओएस 7 में साइलेंट पुश नोटिफिकेशन काम नहीं कर रहा है कैसे कार्य करते हुए कुछ कॉलम में अलग-अलग स्ट्रिंग्स को स्ट्र्रेस करने के लिए जब भी मैं कोई नया प्रोजेक्ट तैयार करता हूं, तो एक्लिप्स स्वचालित रूप से ऐपकामपेट v7 लाइब्रेरी समर्थन क्यों जोड़ता है? Java.lang.Thread.interrupt () क्या करता है? जेपीए द्वारा जारी एसक्यूएल प्रश्नों को कैसे देखें? टीसीपी क्लाइंट डिस्कनेक्ट करना एंड्रॉइड में एप्लिकेशन हीप आकार का पता लगाएं हनोई के टॉवर: पुनरावर्ती अल्गोरिदम JAX-RS / जर्सी त्रुटि प्रबंधन को कैसे अनुकूलित करें? vuejs मूल घटक से मूल डेटा अपडेट करें आर डेटाफ्रेम में शून्य के साथ मैं एनए वैल्यू कैसे बदल सकता हूं? डीबग बनाम रिलीज .नेट में

Google मानचित्र V2 पर मार्करों को एनिमेट करना

वीओ एपीआई का उपयोग करके गौल मैप्स के मार्करों को चेतन करने का सबसे अच्छा तरीका क्या है?

मैं एक नक्शा केंद्रित गेम पर काम कर रहा हूं जहां मैं लोगों के स्थानों को ट्रैक करता हूं और उन्हें देखने के लिए मानचित्र पर प्रदर्शित करता हूं। जैसे ही लोग चले जाते हैं, मैं अपने वर्तमान से एक मार्कर को अपनी नवीनतम स्थिति में चेतन करना चाहता हूं। हर व्यक्ति का एक दिशा है, इसलिए मुझे मार्कर को उचित रूप से घुमाने की जरूरत है।

नया Google मानचित्र API का उपयोग करने का यह सबसे अच्छा तरीका क्या है?

वेब के समाधान से एकत्रित समाधान "Google मानचित्र V2 पर मार्करों को एनिमेट करना"

एंड्रॉइड के सभी विभिन्न संस्करणों के लिए, कुछ शुरुआती बिंदु से समापन बिंदु तक मार्करों को कैसे एनिमेट करने के बारे में कुछ Google इंजीनियर ने कुछ सुरुचिपूर्ण नमूना कोड के साथ एक अच्छा डेमो वीडियो प्रदान किया है:

संबंधित कोड यहाँ है:

https://gist.github.com/broady/6314689

और कार्रवाई में यह सब का एक अच्छा डेमो वीडियो

http://youtu.be/WKfZsCKSXVQ

नीचे दिए गए पुराने उत्तर दिये गए

दस्तावेज़ीकरण में, यह उल्लेख किया गया है कि मार्कर आइकन परिवर्तित नहीं किए जा सकते हैं:

चिह्न

मार्कर के लिए प्रदर्शित बिटमैप अगर आइकन को सेट किए बिना छोड़ दिया जाता है, तो एक डिफ़ॉल्ट आइकन प्रदर्शित होता है। आप डिफ़ॉल्ट मार्कर (फ्लोट) का उपयोग करके डिफ़ॉल्ट आइकन का वैकल्पिक रंग निर्दिष्ट कर सकते हैं। आपके द्वारा मार्कर बनाया जाने के बाद आप आइकन बदल नहीं सकते।

Google मानचित्र एपीआई दस्तावेज़ीकरण

आप विशिष्ट मार्करों का ट्रैक रखने के लिए जा रहे हैं, शायद यहां वर्णित तरीके के समान एक विधि का उपयोग कर रहे हैं: किसी ऑब्जेक्ट के लिए एक मार्कर लिंक करें , फिर पता लगाएं कि आपको किस मार्कर को अपडेट करना होगा मार्कर पर .remove() को कॉल करें, फिर "इच्छित दिशा" के आधार पर घुमाए गए छवि बनाएं, उस छवि के साथ एक नया मार्कर बनाएं, और नए मार्कर को मानचित्र पर जोड़ें।

आपको नक्शे को "साफ़" करने की आवश्यकता नहीं है, बस उस मार्कर को हटा दें जिसे आप संशोधित करना चाहते हैं, एक नया बनाएं, फिर उसे नक्शे पर वापस जोड़ें।

दुर्भाग्य से, नया मानचित्र एपीआई अभी तक बहुत लचीला नहीं है। उम्मीद है कि Google इस पर सुधार करना जारी रखता है

मार्कर का एपीआई v2 के rev.7 के रूप में जोड़ा गया एक नया समारोह है। मार्कर.सेट आइकन , ताकि आप दिशा दिखाने के लिए एकाधिक आइकन का उपयोग कर सकें।

DiscDev के 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 भीतर यदि ऐनिमेशन अवधि को एक्स पर सेट किया गया है, और आप स्थान अपडेट प्राप्त कर रहे हैं तो छोटे दर में एक्स, कई एनिमेशन चलेंगे, और आप मार्कर फ्लिकर देख सकते हैं।

इस से बचने के लिए, animationMarkerToICS विधि (उदाहरण के लिए मैं यहां animationMarkerToICS लिया), इस तरह कुछ दिखना चाहिए,

पूर्ण विधि कार्यान्वयन:

 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(); } 

का आनंद लें।