জিএমএসগ্রাউন্ডওভারলে অ্যানিমেটিং - আমি কি একটি ক্যাটাডলিয়ার ব্যবহার করব?


99

আমি গুগল মানচিত্রে আইওএস এসডিকে সর্বশেষ সংস্করণ 1.2.1.2944 এর জন্য এনিমেট করতে পরীক্ষা করছি GMSGroundOverlay। ব্যবহারকারীর ইমেজ সিক্যুয়েন্সের উপর নিয়ন্ত্রণ রয়েছে, সুতরাং অ্যানিমেটেড ব্যবহার করা UIImageদুঃখের সাথে হওয়ার সম্ভাবনা নয়, তাই আমি ফ্লাইতে লোড করছি UIImageGMSGroundOverlay.iconসেট করা হয় UIImageযে আপডেট করা হচ্ছে।

উচ্চ মেমরির ব্যবহার বাদে, আমি মনে করি যে আমি যখনই 1000px x 1000px এরও বেশি বেশি এমন কোনও UIImageব্যবহারকে ওভারলে করার চেষ্টা করি তখন GMSGroundOverlay.iconএটি ক্রাশ হয়ে যায় in UIImage1000px x 1000px এর একটি উল্লেখ করা ক্র্যাশটি পেয়ে যায়।

এটি আমাকে আঘাত করে যদিও সম্ভবত CATiledLayerচিত্রটি কেবলমাত্র স্মৃতিতে এবং পরবর্তীকালে আইকন সম্পত্তিটিতে লোড করার জন্য আমাকে ব্যবহার করতে হবে GMSGroundOverlay, তবে CATiledLayerআইওএস এসডিকে গুগল ম্যাপের সাথে ব্যবহার করার এবং চিত্রগুলি অ্যানিমেটেড হিসাবে সিকোয়েন্স করার কোনও অভিজ্ঞতা আছে GMSGroundOverlayকি?


আমার ঠিক একই সমস্যা হচ্ছে, যদিও ক্র্যাশের জন্য যে থ্রেশহোল্ডটি আমি দেখছি তা আরও কম। আমি এর জন্য একটি সমাধান দেখতে চাই।
এরিক.মিচেল

আমি সব ধরণের জিএমএসওভারলেগুলির জন্য একটি সমাধান চাই
দাইজ-দাজন

আপনি কীভাবে টাইলডায়ারটি ব্যবহার করতে চান তা আমি দেখতে পাচ্ছি না ... ওভারলেটি ইউআইআইমেজ ব্যবহার করে ...
দাইজ-দাজন

উত্তর:


1

আমি এই উত্তরটি প্রেসিংসন.কম থেকে পেয়েছি, আমি মনে করি এটি আপনাকে সহায়তা করতে পারে।

বর্তমানে যেমন আমি অ্যানিমেটিংয়ের জন্য "পজিশন" কিপ্যাথটি ব্যবহার করতে পারি না, আমি আলাদাভাবে "অক্ষাংশ" এবং "দ্রাঘিমাংশ" কীপ্যাথগুলি ব্যবহার করে এটি অ্যানিমেট করে শেষ করেছি।

প্রথমে পয়েন্টগুলি গণনা করুন এবং 2 টি পৃথক অ্যারে যুক্ত করুন, একটি দ্রাঘিমাংশের মান (y) এবং একটি দ্রাঘিমাংশ (x) এর জন্য এবং তারপরে অ্যানিমেট করার জন্য CAKeyFrameAnimation এর মান বৈশিষ্ট্যটি ব্যবহার করুন। ২ টি কেকেফ্রেমএনিমেশন অবজেক্ট (প্রতিটি অক্ষের জন্য ১ টি) তৈরি করুন এবং তাদের 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]];

এটি জিএমএসগ্রাউন্ড ওভারলে নয়। আপনি একটি GMSMarker দেখাচ্ছে showing ওভারলে 'স্তর'
এরিক গ্রস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.