You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

65 lines
2.2 KiB

#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
#import "GoogleMapsDemos/Samples/TileLayerViewController.h"
#import <GoogleMaps/GoogleMaps.h>
@implementation TileLayerViewController {
UISegmentedControl *_switcher;
GMSMapView *_mapView;
GMSTileLayer *_tileLayer;
NSInteger _floor;
}
- (void)viewDidLoad {
[super viewDidLoad];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:37.78318
longitude:-122.403874
zoom:18];
_mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
_mapView.buildingsEnabled = NO;
_mapView.indoorEnabled = NO;
self.view = _mapView;
// The possible floors that might be shown.
NSArray *types = @[ @"1", @"2", @"3" ];
// Create a UISegmentedControl that is the navigationItem's titleView.
_switcher = [[UISegmentedControl alloc] initWithItems:types];
_switcher.selectedSegmentIndex = 0;
_switcher.autoresizingMask = UIViewAutoresizingFlexibleWidth;
_switcher.frame =
CGRectMake(0, 0, 300, _switcher.frame.size.height);
self.navigationItem.titleView = _switcher;
// Listen to touch events on the UISegmentedControl, force initial update.
[_switcher addTarget:self action:@selector(didChangeSwitcher)
forControlEvents:UIControlEventValueChanged];
[self didChangeSwitcher];
}
- (void)didChangeSwitcher {
NSString *title =
[_switcher titleForSegmentAtIndex:_switcher.selectedSegmentIndex];
NSInteger floor = [title integerValue];
if (_floor != floor) {
// Clear existing tileLayer, if any.
_tileLayer.map = nil;
// Create a new GMSTileLayer with the new floor choice.
GMSTileURLConstructor urls = ^(NSUInteger x, NSUInteger y, NSUInteger zoom) {
NSString *url = [NSString
stringWithFormat:@"https://www.gstatic.com/io2010maps/tiles/9/L%zd_%tu_%tu_%tu.png",
floor, zoom, x, y];
return [NSURL URLWithString:url];
};
_tileLayer = [GMSURLTileLayer tileLayerWithURLConstructor:urls];
_tileLayer.map = _mapView;
_floor = floor;
}
}
@end