update May 2014: iOS7 version and notes available here: https://blog.sumbera.com/2014/05/17/wms-on-mapkit-with-ios7/
I have crafted really simple and quick code at ESA App dev camp for viewing WMS sources. And as few people questioned me on how to do this, I am posting the full code of the MapView component that takes sample WMS service (Ozone) and overlays this above MapKit.
In github here : https://github.com/Sumbera/WMSoverMapKit
you will find MapViewController that accepts WMS sources stored as array with BBOX %f, %f, %f, %f
-(void) addWMSOverlays: (NSArray*) overlays
this can be called from your rootController:
MapViewController * mapViewController = [[MapViewController alloc] init]; WMSOverlay * wmsOverlay =[[WMSOverlay alloc] initWithName:@"Ozone" Url:@"http://wdc.dlr.de/ogc/produkt_t?LAYERS=GOME2_O3& TRANSPARENT=TRUE& FORMAT=image/png& STYLES=& SLD=http%3A%2F%2Fwdc.dlr.de%2Fsld%2FGOME2_O3_sld.xml& TIME=2012-02-12T00:00:00Z& SERVICE=WMS& VERSION=1.1.1& REQUEST=GetMap& SRS=EPSG:4326& WIDTH=256& HEIGHT=256" Opacity:0.5]; [mapViewController addWMSOverlays:[NSArray arrayWithObjects:wmsOverlay, nil]];
#1. that sample code uses experimentaly MKNetworkKit, which has some occasional troubles. You can replace the download method in WMSOverlayView class downloadTile
#2 it uses simple hash for storing tiles on cache.