【问题标题】:How to add shadow to a GMSMarker?如何为 GMSMarker 添加阴影?
【发布时间】:2015-06-02 02:20:47
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这里要理解的是,iOS 上的 Google 地图是在 OpenGL 中实现的。因此,更改GMSMarkerLayer 的默认属性没有视觉效果。对此感到抱歉。

      【讨论】:

      • 这个答案已经过时了。
      【解决方案3】:

      不是实际的,但它是答案:

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

      【讨论】:

        猜你喜欢
        • 2014-10-10
        • 1970-01-01
        • 2021-03-23
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多