应用程序在单击注释泡泡时崩溃
问题描述:
我从数据库创建注释。但是当我点击注释来显示泡泡应用程序崩溃。但是,当我硬编码坐标并在地图上创建地标时,气泡会成功弹出。下面是我从数据库获取并加载注释的代码。 (无效)mapView:(MKMapView *)imnMapView didAddAnnotationViews:(NSArray *)views;(imgMapView *)imnMapView didAddAnnotationViews:(NSArray *)views; {应用程序在单击注释泡泡时崩溃
BOOL *regionSet=FALSE;
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
CLLocationCoordinate2D userCoods1;
NSString *lat = [NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 3)];
NSString *longg = [NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 4)];
float fLat = [lat floatValue];
float fLong = [longg floatValue];
userCoods1.latitude = (CLLocationDegrees)fLat;
userCoods1.longitude = (CLLocationDegrees)fLong;
if(regionSet == FALSE)
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userCoods1,400000,500000);
[mapView setRegion:region animated:YES];
regionSet=TRUE;
}
NSString *siteName = [NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 1)];
NSString *siteAddress = [NSString stringWithUTF8String:(char *) sqlite3_column_text(compiledStatement, 2)];
ParkPlaceMark *placemark=[[ParkPlaceMark alloc] initWithCoordinate1:userCoods1 title:siteName subtitle:siteAddress atm:@"ATM"];
pDescription = @"ATM";
[mapView addAnnotation:placemark];
[placemark release];
}
}
sqlite3_finalize(compiledStatement);
}
}
,当我只是改变硬编码userCoords和创建三个不同的地标气泡弹出和工作正常。请帮我解决这个问题。提前致谢。
答
为什么不将纬度和经度值保存为数据库中的小数或浮点数?转换它更容易。
你可以记录使用NSLog的值和lat和longg吗?它们是否被转换并存储在正确的地方?
NSLog(@"String - Latitude: %@ Longitude: %@", lat, longg);
NSLog(@"Float - Latitude: %f Longitude: %f", fLat, fLong);
它对拉特长没问题。注释出现在正确的地方。唯一的问题是当我点击注释时,应用程序崩溃与Exec_Bad_Access。 – Amarpreet 2010-10-11 00:13:29
您确定注释的标题和副标题设置正确吗?触摸它们时弹出的气泡或应用程序在此之前崩溃了吗? – Jeroen 2010-10-11 00:18:33
是的,我确定标题和副标题设置正确。当我点击泡泡时,应用程序崩溃。应用程序在泡泡弹出之前崩溃 – Amarpreet 2010-10-11 00:23:38