GIF-изображение в качестве маркера в Google Map для iOS (Swift) - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть этот рисунок:enter image description hereЯ могу добавить пользовательское статическое изображение в качестве маркера, используя следующий код:

if let location = locationManager.location {
            currentLocationMarker = GMSMarker(position: location.coordinate)
            currentLocationMarker?.icon = UIImage(named: "user")
            currentLocationMarker?.map = mapView
            currentLocationMarker?.rotation = locationManager.location?.course ?? 0
        }

Я хочу использовать это изображение GIF в качестве маркера.Там в любом случае?Хотя я знаю, что статические изображения приветствуются, но есть ли возможность?

Я думал о добавлении UIView скажем 100x100 представления и анимации этого значка в нем, не пробовал, но я пробовал решение, упомянутое в этой теме: Как загрузить GIFизображение в Swift? как:

let jeremyGif = UIImage.gifImageWithName("puppy")
let imageView = UIImageView(image: jeremyGif)
imageView.frame = CGRect(x: 0, y: 0, width: jeremyGif?.size.width ?? 100.0, height: jeremyGif?.size.height ?? 100.0)
//view.addSubview(imageView)
//mapView.addSubview(imageView)

if let location = locationManager.location {
    currentLocationMarker = GMSMarker(position: location.coordinate)
    currentLocationMarker?.icon = imageView.image //UIImage(named: "user")
    currentLocationMarker?.map = mapView
    currentLocationMarker?.rotation = locationManager.location?.course ?? 0
}

, но это также не работает.Я добавил это изображение GIF в активы, и вот как это выглядит в нем:

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Спасибо за ваш вопрос и ответ.Основная идея здесь - переписать GMSMarker.iconView с помощью UIImageView, отображающего изображение Gif

. Я использовал вашу идею для моих реализаций, которые могут быть немного сложнее, чем ваш ответ, но не использовал 3-ю библиотеку

Во-первых,Я экспортирую изображение gif в последовательность изображений png этим инструментом https://onlinepngtools.com/convert-gif-to-png

Затем я создаю UIImageView, который анимирует эти PNG

UIImageView * gifImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
gifImageView.animationImages = @[ [UIImage imageNamed:@"gifToPngFrame01"]
                                  ,[UIImage imageNamed:@"gifToPngFrame02"]
                                  ,[UIImage imageNamed:@"gifToPngFrame03"]
                                  ,[UIImage imageNamed:@"gifToPngFrame04"]
                                  ,[UIImage imageNamed:@"gifToPngFrame05"]
                                  ,[UIImage imageNamed:@"gifToPngFrame06"]
                                 ,[UIImage imageNamed:@"gifToPngFrame07"]
                                 ,[UIImage imageNamed:@"gifToPngFrame08"]
                                 ,[UIImage imageNamed:@"gifToPngFrame09"]
                                 ,[UIImage imageNamed:@"gifToPngFrame10"]
                                 ,[UIImage imageNamed:@"gifToPngFrame11"]
                                 ,[UIImage imageNamed:@"gifToPngFrame12"]
                                 ,[UIImage imageNamed:@"gifToPngFrame13"]];

gifImageView.animationRepeatCount = 0;
gifImageView.animationDuration = 1;


CLLocationCoordinate2D position2 = CLLocationCoordinate2DMake(21.033333, 105.87);

GMSMarker *gifMarker = [GMSMarker markerWithPosition:position2];
gifMarker.iconView = gifImageView;
gifMarker.map = mapView;
gifMarker.groundAnchor = CGPointMake(0.5, 0.5);

[mapView animateToLocation:position2];

[gifImageView startAnimating];

Этот код использует цель c.Но я думаю, что это может дать дополнительную пользу другим по этой теме

0 голосов
/ 14 февраля 2019

Я понял.Итак, вот решение:

  1. Добавьте изображение gif в папку проекта, а не в ресурсы.enter image description here
  2. Создайте новый файл swift и скопируйте / вставьте код по этой ссылке: https://github.com/kiritmodi2702/GIF-Swift/blob/master/GIF-Swift/iOSDevCenters%2BGIF.swift
  3. Добавьте этот код, где вы хотите иметьизображение GIF.В моем случае я размещаю его в местоположении пользователя:

    func addCurrentLocationMarker() {
    currentLocationMarker?.map = nil; currentLocationMarker = nil
    let puppyGif = UIImage.gifImageWithName("Puppy")
    let imageView = UIImageView(image: puppyGif)
    imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
    
    if let location = locationManager.location {
        currentLocationMarker = GMSMarker(position: location.coordinate)
        currentLocationMarker?.iconView = imageView
        currentLocationMarker?.map = mapView
        currentLocationMarker?.rotation = locationManager.location?.course ?? 0
    } }
    

и все работает: enter image description here

...