0
我在地圖視圖中添加了地面覆蓋圖,並且我發現了很多不同的方法來改變groundoverlay.icon的alpha值。 How to set the opacity/alpha of a UIImage? 但它似乎沒有影響的應用程序,我仍然無法看到圖像背後的地圖或其他groundoverlays。 有沒有解決這個問題的方法?如何更改Google地圖ios sdk中的地面覆蓋圖的alpha值?
我在地圖視圖中添加了地面覆蓋圖,並且我發現了很多不同的方法來改變groundoverlay.icon的alpha值。 How to set the opacity/alpha of a UIImage? 但它似乎沒有影響的應用程序,我仍然無法看到圖像背後的地圖或其他groundoverlays。 有沒有解決這個問題的方法?如何更改Google地圖ios sdk中的地面覆蓋圖的alpha值?
+ (UIImage *) setImage:(UIImage *)image withAlpha:(CGFloat)alpha
{
// Create a pixel buffer in an easy to use format
CGImageRef imageRef = [image CGImage];
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
UInt8 * m_PixelBuf = malloc(sizeof(UInt8) * height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(m_PixelBuf, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextRelease(context);
//alter the alpha
int length = height * width * 4;
for (int i=0; i<length; i+=4)
{
m_PixelBuf[i+3] = 255*alpha;
}
//create a new image
CGContextRef ctx = CGBitmapContextCreate(m_PixelBuf, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGImageRef newImgRef = CGBitmapContextCreateImage(ctx);
CGColorSpaceRelease(colorSpace);
CGContextRelease(ctx);
free(m_PixelBuf);
UIImage *finalImage = [UIImage imageWithCGImage:newImgRef];
CGImageRelease(newImgRef);
return finalImage;
}
尋找一個解決方案自己。似乎有一個可通過JavaScript API設置的不透明選項(請參閱http://stackoverflow.com/questions/11132537/google-map-v3-png-groundoverlay-opacity),但我還沒有弄清楚如何訪問它通過iOS API。 – Phil