私は場所のピンを持つ地図を持っているアプリを持っていますが、私はそれを変更してユーザの場所をズームインしたいのです。MapKitズーム質問
デフォルトでは、座標は0,0(アフリカの海岸から外れています)から始まりましたが、今はイギリスに住んでいますが、ストリートレベルまでズームインすることはできません。私がDelta
の設定を調整すると、違いはありません。
ここに私が使用しているコードがあります。
#import "FirstViewController.h"
#import "MapPin.h"
@implementation FirstViewController
@synthesize map;
@synthesize locationManager , location;
-(void)addAnnotations{
// Normally read the data for these from the file system or a Web service
CLLocationCoordinate2D coordinate = {53.0670, -2.521};
MapPin *pin = [[MapPin alloc]initWithCoordinates:coordinate
placeName:@"Mr Shoe - Gents,Ladies,Kids"
description:@"01270 626767, 123 Your Street, CW5 5NA"
];
[self.map addAnnotation:pin];
[pin release];
// Normally read the data for these from the file system or a Web service
CLLocationCoordinate2D coordinate2 = {53.0659, -2.521};
MapPin *pin2 = [[MapPin alloc]initWithCoordinates:coordinate2
placeName:@"Veg-is-us - Fruit & veg"
description:@"01270 626767, 123 Your Street, CW5 5NA"
];
[self.map addAnnotation:pin2];
[pin2 release];
CLLocationCoordinate2D coordinate3= {53.06879, -2.52195};
MapPin *pin3= [[MapPin alloc]initWithCoordinates:coordinate3
placeName:@"PC Centre Nantwich"
description:@"01270 626767, 15c Beam street, CW5 5NA"
];
[self.map addAnnotation:pin3];
[pin3 release];
}
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
/*
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization.
}
return self;
}
*/
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
[self addAnnotations];
[self addAnnotations];
[super viewDidLoad];
}
-(void) locationManager: (CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
location = newLocation.coordinate;
//One location is obtained.. just zoom to that location
MKCoordinateRegion region;
region.center=location;
//Set Zoom level using Span
MKCoordinateSpan span;
span.latitudeDelta=0.4;
span.longitudeDelta=0.4;
region.span=span;
NSLog(@"map=%@", map);
[map setRegion:region animated:TRUE];
}
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations.
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
誰ですか?それは簡単な間違いでなければなりませんが、私はそれを見ることができません。 – user1313926
コードは大丈夫です。デリゲートメソッドが呼び出されていることを確認してください(ブレークポイントまたはNSLogをそこに置く)か?そのデリゲートメソッドでは、setRegion行の直前に 'NSLog(@" map =%@ "、map);を入れ、それが何を表示するかを見てください。アプリ内の他の場所でマップ領域を更新していますか? – Anna
@MDTこれは私のコードですが、デバッグするために出力しようとしましたが、Xcodeをアップグレードしてからログに記録されているようです(古いデバッグコンソールは正常に動作しました) – user1313926