应用程序在单击注释气泡时崩溃

时间:2010-10-10 23:51:42

标签: iphone

我正在从数据库创建注释。但是当我点击注释来显示泡泡应用程序崩溃时。但是当我硬编码坐标并在地图上创建地标时,气泡会成功弹出。下面是我从数据库中获取并加载注释的代码。

- (void)mapView:(MKMapView *)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);

        }   

}

当我只是更改用户硬编码并创建三个不同的地标时,气泡弹出并正常工作。请帮我摆脱这个。提前谢谢。

1 个答案:

答案 0 :(得分:0)

为什么不在数据库中将纬度和经度值保存为十进制或浮点值?转换它会更容易。

您可以使用NSLog记录lat和long中的值吗?它们是否被转换并储存在扁平和扁平状态中?

NSLog(@"String - Latitude: %@ Longitude: %@", lat, longg);
NSLog(@"Float  - Latitude: %f Longitude: %f", fLat, fLong);