以自定义纬度/经度创建新的CLLocationCoordinate2D

Kar*_*y S 31 objective-c mapkit ios4 ios

我觉得这个问题很糟糕,因为看起来这么简单,但是我已经查看了所有相关的资源,尝试了很多我见过别人使用的解决方案的组合,以及什么都没有效果......

我试图迭代我收到的一些XML,并解析XML中坐标的纬度和经度,并将其存储在一个数组中,然后我将从中绘制它.

我的问题是无论我使用什么类型,我如何投射,你有什么,xcode总是发现它的某些问题.

我的.h文件的相关部分:

CLLocationCoordinate2D Coord;
CLLocationDegrees lat;
CLLocationDegrees lon;

@property (nonatomic, readwrite) CLLocationCoordinate2D Coord;
@property (nonatomic, readwrite) CLLocationDegrees lat;
@property (nonatomic, readwrite) CLLocationDegrees lon;
Run Code Online (Sandbox Code Playgroud)

我的.m文件的相关部分:

else if ([elementName isEqualToString:@"Lat"]) {
        checkpoint.lat = [[attributeDict objectForKey:@"degrees"] integerValue];
}
else if ([elementName isEqualToString:@"Lon"]) {
    checkpoint.lon = [[attributeDict objectForKey:@"degrees"] integerValue];
}
else if ([elementName isEqualToString:@"Coord"]) {
    checkpoint.Coord = [[CLLocation alloc] initWithLatitude:checkpoint.lat longitude:checkpoint.lon];
}
Run Code Online (Sandbox Code Playgroud)

我得到的当前错误是:"从不兼容的类型'id''分配给'CLLocationCoordinate2D.我认为这意味着初始化函数的返回值不正确,但我不知道为什么因为它是内置函数...

我也尝试过看到别人在做什么对我最有意义的事情:

checkpoint.Coord = CLLocationCoordinate2DMake(checkpoint.lat, checkpoint.lon);
Run Code Online (Sandbox Code Playgroud)

虽然这不会立即返回错误,但当我尝试构建并运行它时,它会给我:

体系结构i386的未定义符号:"_ CLLocationCoordinate2DMake",引自: - Checkpoint.o中的[XMLParser parser:didStartElement:namespaceURI:qualifiedName:attributes:] ld:未找到架构i386的符号collect2:ld返回1退出状态

任何帮助/澄清/推动正确的方向将非常感激,因为我现在非常缺乏想法.

Fir*_*eer 50

对你来说最有意义的(CLLocationCoordinate2DMake)是正确的.您只是忘了在项目中包含CoreLocation框架.

而且,正如其他人所指出的那样,文件中的lat/lon可能不是整数.


Ped*_*mão 8

我做的是:首先创建一个CLLocationCoordinate2D:

CLLocationCoordinate2D c2D = CLLocationCoordinate2DMake(CLLocationDegrees latitude, CLLocationDegrees longitude); 
Run Code Online (Sandbox Code Playgroud)

我的经纬度是双重类型.

在您的Imports中确保导入Mapkit库.

#import <MapKit/MapKit.h>
Run Code Online (Sandbox Code Playgroud)