CLLocationManagerDelegate方法未在iPod Touch中调用

时间:2010-06-18 14:47:08

标签: iphone objective-c

全部,

我正在使用一个示例代码,它使用CLLocationManager类来确定用户的当前位置。 当我在iPad上运行这个应用程序时,我得到了正确的位置,但是当我在iPod Touch上运行相同的应用程序时,我得到一个空白标签,即标签上没有显示任何内容。尽管Wi-Fi信号强度在iPod和iPad上都很好。代码看起来像......

- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation{




     int degrees = newLocation.coordinate.latitude;

    double decimal = fabs(newLocation.coordinate.latitude - degrees);
    int minutes = decimal * 60;
     double seconds = decimal * 3600 - minutes * 60;
NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
                 degrees, minutes, seconds];


    latLabel.text = lat;
    [latLocationArray addObject:lat]; 






degrees = newLocation.coordinate.longitude;
decimal = fabs(newLocation.coordinate.longitude - degrees);
minutes = decimal * 60;
seconds = decimal * 3600 - minutes * 60;
NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
                   degrees, minutes, seconds];
longLabel.text = longt;
 [longLocationArray addObject:longt];

}

2 个答案:

答案 0 :(得分:1)

iPad可能会看到iPod Touch无法看到的WiFi电台。 Touch具有较小的WiFi范围。你是在一个只有很少的WiFi站(乡村)的地区进行测试的。

iPad是3G型号吗?如果是,如果WiFi不工作,它将使用GPS和手机信号塔。

您是否检查过位置管理员发送给您的任何错误?您之前可能已禁用该应用的位置数据,或者可能存在其他错误。

答案 1 :(得分:0)

int degrees = newLocation.coordinate.latitude;

double decimal = fabs(newLocation.coordinate.latitude - degrees);
int minutes = decimal * 60;
double seconds = decimal * 3600 - minutes * 60;

你知道当newLocation.coordinate.latitude> = 0时,所有这些阴谋的净结果为'0',对吗?

如果newLocation.coordinate.latitude = 90 .....

度= 90
decimal = 0; (90 - 90)
分钟= 0; (0 * 60)
秒= 0; (0 * 3600 - 0 * 60)//假设典型的操作数优先权