这不是一个编码问题,它只是我试图实现的概念(alogirthm),如果你愿意的话。
基本上我想做的是检查用户是否在特定的地方,即英国的meseum!然后向他们发送一条信息,欢迎来到英国的meseum。
我的数据库中只有三个位置
我知道我需要使用实时检查!所以我想我得到了用户位置,检查它是否匹配任何三个值,然后发送消息。你能建议更好吗?感谢
答案 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
}