0

私のアプリでは、mapviewでコアロケーションとMapkitフレームワークを使用しました。アプリをインストールすると、デフォルトで「現在地を使用したい」というアラートが表示されますが、一度だけコーディングする必要はありません。また、「許可しない」を選択すると、マップビューに青い背景が表示されますか?「OK」を選択すると、正常に動作します。

助けて!

私のコードは次のとおりです。

Appdelegate.m

CLLocationManager *locationManager;

    CLLocation *userLocation;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    [self createEditableCopyOfDatabaseIfNeeded];

    //=========================================Location Manager

    if(locationManager == nil)

        locationManager =[[CLLocationManager alloc] init];

    self.locationManager.delegate = self;

    self.locationManager.desiredAccuracy= kCLLocationAccuracyBest;

    self.locationManager.distanceFilter= 5;

    [locationManager startUpdatingLocation];
    [locationManager startUpdatingHeading];
    //==========================================
}

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    NSLog(@"new location");

    self.userLocation=newLocation;

    NSLog(@"user llocation %f , %f",userLocation.coordinate.latitude,userLocation.coordinate.longitude);

    [self.locationManager startMonitoringSignificantLocationChanges];
}


Mapview.h
{
IBOutlet MKMapView *map;

        CLLocation         *currentLocation;
        NSString           *specificLatitude;
        NSString           *specificLongitude;

    MKCoordinateRegion  region;
}

Mapview.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [APPDELEGATE.locationManager startUpdatingLocation];


}
- (void)viewWillAppear:(BOOL)animated
{
self.map.delegate = self;

    // Ensure that you can view your own location in the map view.
    [self.map setShowsUserLocation:YES];
}

-(void)viewDidAppear:(BOOL)animated{


    currentLocation =APPDELEGATE.userLocation;

    region.center = self.currentLocation.coordinate;
    MKCoordinateSpan span;
    span.latitudeDelta = 0.05;
    span.longitudeDelta = 0.03;
    region.span = span;
    [map setRegion:region animated:TRUE];
    [self searchPressed];

    NSLog(@"Mapview %f %f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude
          );

}
4

2 に答える 2

0

「許可しない」を選択した場合は、このデリゲートを呼び出します。

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
     //Do something
}
于 2012-09-26T05:59:50.553 に答える
0

私はこれを試していませんが、おそらくそれが機能するかどうかをテストすることができます。

マップビューを表示するViewControllerについては、UIAlertViewDelegateに準拠してみてください。

次に、アラートビューデリゲートコールバックメソッドで、機能する場合は、必要な操作を実行できます。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    // you need to type the exact title of the alert popup
    // button index starts from 0 (left most button), so if the are 2 buttons 
    // and "Don't allow" button is on the right, the button == 1 is that button
    // the user tapped on

    if([alertView.title isEqualToString:@"Type Exact Alert Title Here"] && buttonIndex == 1)
    {
        // do something
    }
}
于 2012-09-26T07:30:43.183 に答える