繁体   English   中英

如何在GMSMarker中添加阴影?

[英]How to add shadow to a GMSMarker?

我正在尝试向GMSMapView上的标记添加一些阴影 ,但是配置GMSMarkerLayer的阴影属性似乎没有任何效果。

GMSMarker *marker = [[GMSMarker alloc] init];
[marker setMap:self.mapView];
marker.snippet = @"Description";
marker.title = @"Title";
marker.position = busData.location.coordinate;
marker.icon = [UIImage imageNamed:@"BusMarker"];
marker.layer.shadowOpacity = 0.7;
marker.layer.shadowOffset = CGSizeMake(0, 3);
marker.layer.shadowRadius = 5.0;
marker.layer.shadowColor = [UIColor blackColor].CGColor;

我正在设置与CALayer对象相同的属性,因为GMSMarkerLayer子类是CALayer。

我是在做错什么还是错误? 我正在使用SDK版本1.10.0。

您可以使用iconView属性并在该视图内绘制阴影(将其限制在iconView范围内)。

这里要了解的是iOS上的Google Maps是在OpenGL中实现的。 因此,更改GMSMarkerLayer的默认属性没有视觉效果。 对于那个很抱歉。

不实际,但这是答案:

-(UIImage *)makeShadowImage:(UIImage *) image;
{
    CALayer *imageLayer = [CALayer layer];
    imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height);
    imageLayer.contents = (id) image.CGImage;

    [imageLayer setShadowColor:[[UIColor grayColor] CGColor]];
    [imageLayer setShadowOpacity:0.5];
    [imageLayer setShadowOffset:CGSizeMake(0, 0)];
    [imageLayer setShadowRadius:4.0];
    imageLayer.masksToBounds = YES;

    UIGraphicsBeginImageContext(image.size);
    [imageLayer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return roundedImage;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM