在iOS中使用GMSSyncTileLayer进行透明平铺覆盖

时间:2015-03-27 20:43:14

标签: google-maps uiimage png google-maps-sdk-ios

我正在使用Google Maps API。我正在现有地图上创建叠加层。

叠加层使用UIImages,它取自具有透明区域的.png图像。

.PNG文件非常好,并且在其他任何地方都是透明的。但是当我从GMSSyncTile的 tileForX:Y:zoom:方法返回它们(从这个方法返回UIImages以显示在地图上)时,它们不再是透明的。现在,透明区域只是白色....!

我花了好几个小时试图解决这个问题,而且我的智慧结束了。如果有人有任何想法,我会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

是!!!!!!我找到了答案!

当您创建UIImage并且即将在地图上将其作为图块返回时,请通过以下代码运行该图像:

CGSize size = [*yourImage* size];
UIGraphicsBeginImageContext(size);
CGRect rect = CGRectMake(0, 0, size.width, size.height);
[*yourImage* drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0];

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 0.0);

CGContextSetLineWidth(context, 5.0);
CGContextStrokeRect(context, rect);
fixedImage =  UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return fixedImage;