如何从iphone获取用户的位置?

时间:2011-04-22 13:39:34

标签: iphone location real-time

这不是一个编码问题,它只是我试图实现的概念(alogirthm),如果你愿意的话。

基本上我想做的是检查用户是否在特定的地方,即英国的meseum!然后向他们发送一条信息,欢迎来到英国的meseum。

我的数据库中只有三个位置

  • 英国的meuseum
  • the madamme tussaud
  • 威斯敏斯特修道院

我知道我需要使用实时检查!所以我想我得到了用户位置,检查它是否匹配任何三个值,然后发送消息。你能建议更好吗?感谢

2 个答案:

答案 0 :(得分:1)

您想要的是geocoding。通常是通过向实际为您进行转换的服务发送请求来完成的。 Google和其他一些公司提供此服务。

以下可以用作代码参考

-(CLLocationCoordinate2D) addressLocation:(NSString *)input {

    NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
                           [input stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
    NSArray *listItems = [locationString componentsSeparatedByString:@","];

    double latitude = 0.0;
    double longitude = 0.0;

    if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
        latitude = [[listItems objectAtIndex:2] doubleValue];
        longitude = [[listItems objectAtIndex:3] doubleValue];
    }
    else {
        //Show error
    }
    CLLocationCoordinate2D location;
    location.latitude = latitude;
    location.longitude = longitude;
    return location;
}

答案 1 :(得分:1)

是的,听起来它会起作用。请务必检查半径内的位置匹配(位置永远不会完全相同),即

if ( dist ( userCoordinate - museumCoordinate) < THRESHOLD ) ...

(使用distanceFromLocation:方法计算)

此外,要获得实时检查,您可能希望使用CLLocationManager的委托回调来在用户位置更改时接收更新。

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation {

     // The location has changed to check if they are in one of your places
 }