GMSGroundOverlay एनिमेशन - क्या मुझे CATiledLayer का उपयोग करना चाहिए?


99

मैं iOS SDK के नवीनतम संस्करण 1.2.1.2944 के लिए Google मैप्स के साथ प्रयोग कर रहा हूँ GMSGroundOverlay। उपयोगकर्ता के पास छवि अनुक्रम पर नियंत्रण होता है, इसलिए एनिमेटेड UIImageका उपयोग करना दुख की संभावना नहीं है, इसलिए मैं UIImageमक्खी पर लोड कर रहा हूं । उस GMSGroundOverlay.iconपर सेट किया UIImageजा रहा है जिसे अपडेट किया जा रहा है।

उच्च स्मृति उपयोग के अलावा, मुझे लगता है कि जब भी मैं 1000px से अधिक 1000px से अधिक UIImageउपयोग करने की कोशिश करता हूं, तो यह एक सीमा हो जाती है GMSGroundOverlay.icon, यह दुर्घटनाग्रस्त हो जाता है। एक संदर्भित UIImage1000 पिक्सेल का एक्स 1000 पिक्सेल दुर्घटना के आसपास हो जाता है।

हालाँकि यह मुझ पर प्रहार करता है कि शायद मुझे CATiledLayerछवि को केवल मेमोरी में लोड करने के लिए उपयोग करना चाहिए और बाद में आइकन प्रॉपर्टी में GMSGroundOverlay, लेकिन क्या किसी को CATiledLayerआईओएस एसडीके के लिए Google मैप्स के साथ उपयोग करने और एनिमेटेड के रूप में छवियों को सीक्वेंस करने का कोई अनुभव है GMSGroundOverlay?


मैं सिर्फ एक ही समस्या है, हालांकि मैं दुर्घटनाओं के लिए देख रहा हूँ दहलीज भी कम है। मैं इसके लिए एक समाधान देखना पसंद करूंगा।
eric.mitchell

मैं सभी प्रकार के GMSOverlays के लिए एक समाधान चाहूंगा
Daij-Djan

मैं नहीं देखता कि आप TiledLayer का उपयोग कैसे करना चाहते हैं .. ओवरले एक UIImage का उपयोग करता है ...
Daij-Djan

जवाबों:


1

मुझे यह जवाब दबाने के लिए मिला है। Com, मुझे लगता है कि यह आपकी मदद कर सकता है।

जैसा कि वर्तमान में मैं एनिमेट करने के लिए "पोज़िशन" कीपाथ का उपयोग नहीं कर सकता, मैंने अलग से "लैटीट्यूड" और "लॉन्गिट्यूड" कीपैथ का उपयोग करके इसे समाप्त कर दिया।

पहले बिंदुओं की गणना करें और उन्हें 2 अलग-अलग सरणियों में जोड़ें, एक अक्षांश मान (y) के लिए और एक देशांतर (x) के लिए और फिर CAKeyFrameAnimation में चेतन के लिए मान गुण का उपयोग करें। 2 CAKeyFrameAnimation ऑब्जेक्ट्स बनाएं (प्रत्येक अक्ष के लिए 1) और CAAnimationGroup का उपयोग करके उन्हें एक साथ समूहित करें और उन्हें एक सर्कल बनाने के लिए एक साथ चेतन करें।

मेरे समीकरण में मैं प्रत्येक अक्ष पर त्रिज्या की लंबाई बदलती हूं ताकि मैं एक अंडाकार पथ भी उत्पन्न कर सकूं।

NSMutableArray *latitudes = [NSMutableArray arrayWithCapacity:21];
    NSMutableArray *longitudes = [NSMutableArray arrayWithCapacity:21];
    for (int i = 0; i <= 20; i++) {
        CGFloat radians = (float)i * ((2.0f * M_PI) / 20.0f);

        // Calculate the x,y coordinate using the angle
        CGFloat x = hDist * cosf(radians);
        CGFloat y = vDist * sinf(radians);

        // Calculate the real lat and lon using the
        // current lat and lon as center points.
        y = marker.position.latitude + y;
        x = marker.position.longitude + x;


        [longitudes addObject:[NSNumber numberWithFloat:x]];
        [latitudes addObject:[NSNumber numberWithFloat:y]];
    }

    CAKeyframeAnimation *horizontalAnimation = [CAKeyframeAnimation animationWithKeyPath:@"longitude"];
    horizontalAnimation.values = longitudes;
    horizontalAnimation.duration = duration;

    CAKeyframeAnimation *verticleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"latitude"];
    verticleAnimation.values = latitudes;
    verticleAnimation.duration = duration;

    CAAnimationGroup *group = [[CAAnimationGroup alloc] init];
    group.animations = @[horizontalAnimation, verticleAnimation];
    group.duration = duration;
    group.repeatCount = HUGE_VALF;
    [marker.layer addAnimation:group forKey:[NSString stringWithFormat:@"circular-%@",marker.description]];

यह GMSGroundOverlay नहीं है। आप एक GMSMarker दिखा रहे हैं। ओवरले 'लेयर' तक समान पहुँच प्रदान नहीं करता है
एरिक ग्रॉस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.