好的,我試圖獲得當您點擊當前位置按鈕時iPhone地圖應用程序具有的相同放大/位置更新功能。我正在使用從here和here(Brad Smith發佈的代碼)中找到的代碼來完成大部分工作。所以我真正需要做的就是圍繞更新的當前位置對地圖進行中心化,並在每次更新時進一步放大。在iPhone上更新/縮放到當前位置
現在我在測試centerCoord是否爲null時遇到了一些困難。正如你從結果(下面列出)中看到的那樣,由於某些原因我崩潰了。下面是相關代碼:
- (void) showCurrentLocationButtonTapped {
NSLog(@"Showing current location.");
locController = [[LocationController alloc] init];
[mapView setShowsUserLocation:YES];
zoomTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(zoomToCurrentLocation) userInfo:nil repeats:YES];
}
- (void) zoomToCurrentLocation {
CLLocationCoordinate2D centerCoord = self.locController.currentLocation.coordinate;
NSLog(@"Checking if loc controller is null");
if (!self.locController) {
NSLog(@"centerCoord is null!");
}
NSLog(@"centerCoord: %@",centerCoord);
[mapView setCenterCoordinate:centerCoord zoomLevel:7 animated:YES];
}
這裏是控制檯輸出:
2010-11-10 14:56:11.002 App Name[5278:207] Showing current location.
2010-11-10 14:56:11.504 App Name[5278:207] Checking if loc controller is null
2010-11-10 14:56:11.505 App Name[5278:207] centerCoord: (null)
2010-11-10 14:56:12.004 App Name[5278:207] Checking if loc controller is null
2010-11-10 14:56:12.004 App Name[5278:207] centerCoord: (null)
2010-11-10 14:56:12.504 App Name[5278:207] Checking if loc controller is null
我知道我沒有測試的centerCoord的空湖,但如果我這樣做:
if (!centerCoord) {
我得到該線路上的錯誤說:
MapViewController.m:55: error: wrong type argument to unary exclamation mark
我做5秒而不是30 ,因爲30太長了。小藍點出現在縮小的地圖上。 5秒後,它崩潰。這裏是控制檯輸出:2010-11-10 17:24:09.507應用名稱[5731:207]顯示當前位置。 Wed Nov 10 17:24:10 ...:CGImageCreateWithImageProvider:無效的圖像大小:0 x 0. 2010-11-10 17:24:14.509應用名稱[5731:207]檢查loc控制器是否爲空 – Stunner 2010-11-11 01:25:51
MapViewController。 m:55:錯誤:對一元感嘆號的錯誤類型參數表示您不能對此使用感嘆號。嘗試CLLocationCoordinate2DIsValid(centerCoord)。 – pasine 2010-11-19 19:39:15