2012-08-17 71 views
0

我該如何使用UISlider來改變MKMapView的縮放值。我如何使用UISlider在iPhone中更改MKMapView zoomIn和ZoomOut?

我想這代碼,但在作品不完全,

- (IBAction)slideAction:(id)sender 
    { 


    span.latitudeDelta = 125*(1-slideValue.value)+0.01; 
    span.longitudeDelta = 0.001; 
    region.span = span; 
    region.center=map.centerCoordinate; 
    [map setRegion:region animated:TRUE]; 

    } 

有什麼建議?我認爲他們不是MKMap的默認縮放控制器?

+0

什麼不完美的呢?描述發生了什麼以及你期望發生什麼。 – Craig 2012-08-17 10:29:13

回答

0
// 
// ViewController.m 
// MapKitRegion 

#import "ViewController.h" 
#import <MapKit/MapKit.h> 
#import <CoreLocation/CoreLocation.h> 
#import <AddressBook/AddressBook.h> 

@interface ViewController() <MKMapViewDelegate> 

@property (strong, nonatomic) IBOutlet UITextView *txtAddress; 
@property (strong, nonatomic) IBOutlet UIButton *btnGetMap; 
@property (strong, nonatomic) IBOutlet UISegmentedControl *segType; 
@property (strong, nonatomic) IBOutlet UISlider *slideZoom; 
@property (strong, nonatomic) IBOutlet MKMapView *mapView; 

@property CLLocationCoordinate2D coord; 

- (IBAction)btnGetMapTouched:(id)sender; 
- (IBAction)segTypeChanged:(id)sender; 
- (IBAction)slideZoomChanged:(id)sender; 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    _mapView.delegate = self; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (IBAction)btnGetMapTouched:(id)sender { 
    CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
    [geocoder geocodeAddressString:self.txtAddress.text 
       completionHandler:^(NSArray *placemarks, NSError *error) { 
        if (error) { 
         NSLog(@"Geocode failed with error: %@", error); 
         return; 
        } 
        if(placemarks && placemarks.count > 0) { 
         CLPlacemark *placemark = placemarks[0]; 
         _coord = placemark.location.coordinate; 
         _mapView.centerCoordinate = _coord; 

         [self SetZoom]; 
        } 
       }]; 
} 

- (IBAction)segTypeChanged:(id)sender { 
    if (self.segType.selectedSegmentIndex == 0) 
     _mapView.mapType = MKMapTypeStandard; 
    else 
     _mapView.mapType = MKMapTypeSatellite; 
} 

- (IBAction)slideZoomChanged:(id)sender { 
    [self SetZoom]; 
} 

- (void) SetZoom { 
    int meters = self.slideZoom.value * 30000; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (_coord, meters, meters); 

    [_mapView setRegion:region animated:NO]; 
} 

@end