@@ -123,39 +123,49 @@ - (void)requestTileForX:(NSUInteger)x
123
123
zoom : (NSUInteger )zoom
124
124
receiver : (id <GMSTileReceiver>)receiver {
125
125
dispatch_async (dispatch_get_main_queue (), ^{
126
- [self .methodChannel invokeMethod: @" tileOverlay#getTile"
127
- arguments: @{
128
- @" tileOverlayId" : self.tileOverlayIdentifier ,
129
- @" x" : @(x),
130
- @" y" : @(y),
131
- @" zoom" : @(zoom)
132
- }
133
- result: ^(id _Nullable result) {
134
- UIImage *tileImage;
135
- if ([result isKindOfClass: [NSDictionary class ]]) {
136
- FlutterStandardTypedData *typedData = (FlutterStandardTypedData *)result[@" data" ];
137
- if (typedData == nil ) {
138
- tileImage = kGMSTileLayerNoTile ;
139
- } else {
140
- tileImage = [UIImage imageWithData: typedData.data];
141
- }
142
- } else {
143
- if ([result isKindOfClass: [FlutterError class ]]) {
144
- FlutterError *error = (FlutterError *)result;
145
- NSLog (@" Can't get tile: errorCode = %@ , errorMessage = %@ , details = %@ " ,
146
- [error code ], [error message ], [error details ]);
147
- }
148
- if ([result isKindOfClass: [FlutterMethodNotImplemented class ]]) {
149
- NSLog (@" Can't get tile: notImplemented" );
150
- }
151
- tileImage = kGMSTileLayerNoTile ;
152
- }
153
-
154
- [receiver receiveTileWithX: x y: y zoom: zoom image: tileImage];
155
- }];
126
+ [self .methodChannel
127
+ invokeMethod: @" tileOverlay#getTile"
128
+ arguments: @{
129
+ @" tileOverlayId" : self.tileOverlayIdentifier ,
130
+ @" x" : @(x),
131
+ @" y" : @(y),
132
+ @" zoom" : @(zoom)
133
+ }
134
+ result: ^(id _Nullable result) {
135
+ UIImage *tileImage;
136
+ if ([result isKindOfClass: [NSDictionary class ]]) {
137
+ FlutterStandardTypedData *typedData = (FlutterStandardTypedData *)result[@" data" ];
138
+ if (typedData == nil ) {
139
+ tileImage = kGMSTileLayerNoTile ;
140
+ } else {
141
+ tileImage = [UIImage imageWithData: typedData.data];
142
+ CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB ();
143
+ CGContextRef context = CGBitmapContextCreate (nil , tileImage.size .width , tileImage.size .height , 8 , 0 , colorSpace, kCGImageAlphaPremultipliedLast );
144
+ CGContextDrawImage (context, CGRectMake (0 , 0 , tileImage.size .width , tileImage.size .height ), tileImage.CGImage );
145
+ CGImageRef image = CGBitmapContextCreateImage (context);
146
+ tileImage = [UIImage imageWithCGImage: image];
147
+ CGImageRelease (image);
148
+ CGContextRelease (context);
149
+ CGColorSpaceRelease (colorSpace);
150
+ }
151
+ } else {
152
+ if ([result isKindOfClass: [FlutterError class ]]) {
153
+ FlutterError *error = (FlutterError *)result;
154
+ NSLog (@" Can't get tile: errorCode = %@ , errorMessage = %@ , details = %@ " ,
155
+ [error code ], [error message ], [error details ]);
156
+ }
157
+ if ([result isKindOfClass: [FlutterMethodNotImplemented class ]]) {
158
+ NSLog (@" Can't get tile: notImplemented" );
159
+ }
160
+ tileImage = kGMSTileLayerNoTile ;
161
+ }
162
+
163
+ [receiver receiveTileWithX: x y: y zoom: zoom image: tileImage];
164
+ }];
156
165
});
157
166
}
158
167
168
+
159
169
@end
160
170
161
171
@interface FLTTileOverlaysController ()
0 commit comments