iphone - MKMapView 经纬度坐标

标签 iphone objective-c ios ios5 mkmapview

我目前正在使用 MKMapView,我正在尝试让数据显示在屏幕上。为实现这一点,我决定调整一个小型 MapDataProvider,它吐出一个 MKAnnotation 对象数组 - 每个对象都包含一个具有随机纬度和经度值的坐标。

我已经确保我的 MKMapView 连接到我的 Controller 并且 MKAnnotation 对象数组正确地来 self 的 MapDataProvider...但是出于某种原因..当我尝试在北美指定坐标时(例如. 48, -84)..MKMapView 上什么也没有出现。

在尝试之后,我发现任何小于 0 的经度值都会给我带来这个问题。

我已尝试验证集合中每个 MKAnnotation 对象的坐标值,但 CLLocation2DIsValue() 一直返回 false。

问题:

我可以为 CLLocationCoordinate2D 输入什么范围的纬度和经度值,以便我的图钉显示在北美?

为了提供更多上下文,下面是在 MapDataProvider 中调用的方法:

+(NSArray *) getMockMapData{

NSMutableArray *tempMapData = [[NSMutableArray alloc] initWithCapacity:15];

for (int i=0; i< 15; i++) {

    double latitude = rand()%20 +50;
    double longitude = -107  + rand()%10;

    CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(latitude, longitude);

    if(CLLocationCoordinate2DIsValid(coord) == NO)
        continue;

    [tempMapData addObject:[MockMapData 
                            dataForValues:[@"Item " stringByAppendingString:[[NSNumber numberWithInt:i] description]]
                                 subTitle:[@"Item " stringByAppendingString:[[NSNumber numberWithInt:i]description]] 
                                coordinate:coord]];
    }
    return tempMapData;
}

最佳答案

你原来的代码是这样的:

double latitude = arcrandom()%20 +50;
double longitude = -107  + arcrandom()%10;

(实际上,您可能有 arc4random,而不是 arcrandom。)


arc4random 函数返回一个无符号整数值。

从该值中减去一个整数 (-107) 会导致溢出,从而得到类似 4294967189 的值。那肯定是无效的经度。

不要切换到 rand(文档中说这是一个“错误的随机数生成器”),而是使用 arc4random(我认为这是首选)并强制 float 通过编写 -107.0 而不是 -107 来计算点:

double latitude = arc4random()%20 +50;
double longitude = -107.0  + arc4random()%10;


一个不相关的点是,如果 CLLocationCoordinate2DIsValidNO,你只是在做一个 return 而没有发回任何值(你需要根据方法声明)。 return tempMapData;continue;

关于iphone - MKMapView 经纬度坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780238/

相关文章:

iphone - 委托(delegate)方法如何知道何时被调用

iphone - SQLite。不能添加超过 1000 行

ios - 调整约束时在代码中显示/不显示 Storyboard图像

ios - scrollToItem 在我的 CollectionView 中不起作用?

iphone - AVPlayer 的搜索栏将时间舍入为 10 秒

ios - XCode 6.3.1 启动图像源不适用于 Assets 目录

iphone - 使用 UINavigationController 和默认后退按钮时如何将数据传回父 View ?

iphone - 如何为Grails应用创建移动界面?

ios - 在 NSArray 中存储 UIEdgeInsets

ios - 如何在 Swift 中更改 UICollectionView 的 targetContentOffset?