如何为GMSMarker添加阴影?

时间:2015-06-02 02:20:47

标签: ios ios8 google-maps-sdk-ios

我尝试在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。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

这里需要了解的是iOS上的Google地图是在OpenGL中实现的。因此,更改GMSMarkerLayer的默认属性没有视觉效果。对不起。

答案 2 :(得分:0)

不实际,但这是答案:

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