0
 #define LOCATION_DISTANCE 80.4672
 - (void)viewDidLoad
{
     [super viewDidLoad];
     ....some computation
     locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
    [locationManager setDistanceFilter:kCLDistanceFilterNone];
    [locationManager startUpdatingLocation];

    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 360.0*NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [locationManager stopUpdatingLocation];

    });
     ..........some more computation
 }
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{

  CLLocation *obj = [locations lastObject];
  if (obj.coordinate.latitude != 0 && obj.coordinate.longitude != 0 )
{
    CLLocationCoordinate2D currrentCoordinates ;
    currrentCoordinates.latitude = obj.coordinate.latitude;
    currrentCoordinates.longitude = obj.coordinate.longitude;
 if(obj.horizontalAccuracy>0 && obj.horizontalAccuracy<100){
            self.turnedOffLocationServices =YES;
                [locationManager stopUpdatingLocation];

        } .... more computation
  [self setUpMap:currrentCoordinates];
}
 - (void)setUpMap:(CLLocationCoordinate2D)currentCoordinates
{
      MKCoordinateRegion extentsRegion = MKCoordinateRegionMakeWithDistance(currentCoordinates, LOCATION_DISTANCE, LOCATION_DISTANCE);

MKMapView *mvMap = [[MKMapView alloc] initWithFrame:CGRectMake(20, 594, 360, 347)];
mvMap.delegate = self;
[mvMap setRegion:extentsRegion animated:YES];
mvMap.mapType = MKMapTypeSatellite;
mvMap.autoresizingMask = UIViewAutoresizingNone;
//mvMap.showsUserLocation = YES;
NSLog(@"the current lat is %f", currentCoordinates.latitude);
NSLog(@"the current long val is %f", currentCoordinates.longitude);

[self.scrollView addSubview:mvMap];

ITMAnnotation *annotation = [[ITMAnnotation alloc] initWithCoordinate:currentCoordinates addressDictionary:nil];
annotation.title = @"Drag to Move Pin";
annotation.subtitle = [NSString stringWithFormat:@"%f %f", annotation.coordinate.latitude, annotation.coordinate.longitude];
NSLog(@"subtitle change at 314");

[mvMap addAnnotation:annotation];
self.tempMapView = mvMap;
}

だから私はロケーションマネージャーを作成するviewDidLoadを持っています。想定どおりにdidUpdateLocationsを使用します。その座標を使用してsetUpMapメソッドを呼び出すと、iPad画面の左下隅にマップが表示されます。私の問題は次のとおりです:1)Wi-Fi /セルモードがない場合、正確な位置がわかりません。その方法。しかし、私は手動で座標を入力します(この座標を取るテキストフィールドがあります)それは機能し、場所を示します。2)このno-wifi/nocellモードで4つのレコードを追加しました。地図を表示して3つ追加できます(ただし、現在の場所とは別の場所になります)。しかし、4回目(またはそれ以降)に、マップが表示されるはずの画面にアクセスすると、白になります。これは理にかなっていますか。さらに詳しい情報が必要な場合はお問い合わせください。ありがとう..ああ、これはすべてシミュレータではなくデバイス上にあります。そしてそのiOS6。

4

1 に答える 1

1

セルとGPSは同じチップ上にあるため、セルをオフにするとGPSもオフになります。データ転送を停止したいがGPSが必要な場合は、[ネットワーク設定]で[モバイルデータ]をオフにできます。引き続き電話をかけることはできますが、デバイスは何もダウンロードできません(wifiもオフにした場合)。

于 2013-01-22T21:51:47.620 に答える