我有一个应用程序在iOS设备上工作,从设备不断获得当前的经度和经度。我想在用户到达某个lon / lat时显示警告。
这是很长的路要走:2.39364456 这是要达到的纬度:48.84185814
当用户到达此点时,他应该收到警报。
不幸的是,它不起作用,因为用户并不总能达到这一点。
我想要做的是:如果你接近这一点,在定义的某个范围内,那么我们会弹出警报。
我不知道该怎么做。我尝试实现long / lat到UTM转换器,然后尝试使用UTM格式但是它失败了。
是否可以使用在昏迷之后的lon / lat的数字来设置“范围”,以便弹出显示?
感谢您提前阅读并感谢您的帮助;)
答案 0 :(得分:2)
听起来您正在寻找iOS中Core Location中的区域监控功能。
Here is a related question谈到这一点。
最新的Apple documentation that talks about Region Monitoring。
当您的应用进入您正在观看的区域时,您的应用会使用CLLocationManager委托"locationManager:didEnterRegion:
"方法进行调用。这就是你可以解雇你的UIAlert的地方。
答案 1 :(得分:0)
您有2个位置,aCLLocationA(由您定义的位置)和aCLLocationB用户位置(已更新)。现在你做了什么:
在地图上的点之间使用此代码查找距离:
CLLocationDistance distance = [aCLLocationA distanceFromLocation:aCLLocationB];
if(distance<=yourRange)
{
//You have to show popup, because your location is in range with that point
}
答案 2 :(得分:0)
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
NSLog(@"didUpdateToLocation: %@", newLocation);
CLLocation *currentLocation = newLocation;
if (currentLocation != nil) {
CLLocation *locA = [[CLLocation alloc] initWithLatitude:currentLocation.coordinate.latitude longitude:currentLocation.coordinate.longitude];
}
CLLocation *locB = [[CLLocation alloc] initWithLatitude:lat2 longitude:long2];
distance = [locA distanceFromLocation:locB];
if(distance<yourDesiredDiustance)
{
show Alert
}
}