将NSNumber转换为CLCoordinate

时间:2009-09-01 10:40:23

标签: objective-c coordinates core-location cllocation

我想将数据库中的坐标列表拉入数组(在地图上显示之前)。但是,在数据库中,它们的类型为Number,我无法弄清楚如何将它们转换为坐标。

这不起作用: 我有一个ATM对象(坐标是atm机器),NSNumbers用于纬度和经度。这是一个索引为i的循环,以便逐个拉出它们。 atmsArray已经加载。

ATM *aATM = [self.atmsArray objectAtIndex:i];


CLLocationCoordinate2D coord=[[CLLocationCoordinate2D alloc] initWithLatitude:(CLLocationDegrees)aATM.Latitude longitude:(CLLocationDegrees)aATM.Longitude];

显示错误: -CLLocationCoordinate2D不是objectiveC类名或别名 - 当预期浮点值时使用的-pointer值 - 当预期浮点值时使用的-pointer值

我尝试了一些不同的东西,但无法弄明白。如果需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:14)

aAtm.Longitude和aAtm.Latitude是NSNumbers,它们是指针,因此不能转换为CLLocationDegrees。您需要使用NSNumbers的双精度值。

CLLocationCoordinate2D coord;
coord.longitude = (CLLocationDegrees)[aATM.Longitude doubleValue];
coord.latitude = (CLLocationDegrees)[aATM.Latitude doubleValue];

As per this answer

答案 1 :(得分:6)

你想要的是这个:

CLLocationCoordinate2D coord;
coord.longitude = (CLLocationDegrees)aATM.Longitude;
coord.latitude = (CLLocationDegrees)aATM.Latitude;