如何使用当前位置和半径获得最小和最大纬度和经度?

时间:2010-06-18 06:06:21

标签: iphone iphone-sdk-3.0

我希望使用当前位置的最小和最大纬度和经度。假设我已经给出20km的区域所以使用该纬度和经度我想要最大纬度和经度以及最小纬度和经度也希望所有纬度和经度介于此之间我怎么能得到它。我怎么能使用它的半径。请帮帮我。谢谢你...

3 个答案:

答案 0 :(得分:6)

你可以手动计算它...我不知道是否存在任何其他方式 1°纬度= 69.047法定英里= 60海里 = 111.12公里

所以在20公里的范围内它将是大约0.18纬度 对于经度,转换与纬度相同,除了该值乘以纬度的余弦。

在地图上设置相同的范围以供显示

newRegion.center=newLocation.coordinate;
    //  newRegion.span.latitudeDelta = (20*2)/111.12;   // For kilometers

    newRegion.span.latitudeDelta = (20*2)/60.0; // For Miles
    newRegion.span.longitudeDelta = ((20*2)/60.0) *(cos(newRegion.span.latitudeDelta)); // For Miles
    mapView.region = newRegion;

它将在显示的地图上设置20公里的范围...

所以你可以通过

找到它

你可以通过

找到它
minLattitude = currentLattitude - (RadiusInKm/111.12);
maxLattitude = currentLattitude + (RadiusInKm/111.12);

对于经度相同但将结果乘以纬度的余弦...

答案 1 :(得分:0)

  1. 将度数转换为Radians的宏

    定义DEGREES_TO_RADIANS(度)(度/ 180.0 * M_PI)

  2. 在KM中对raduis的宏

    定义radiusInKM 5.00

  3. 设置最小和最大纬度,经度值

    CLLocation * location; //您当前的位置

    1°纬度= 69.047法定里程= 60海里= 111.12公里

    double minLat = location.coordinate.latitude - (radiusInKM / 111.12);

    double maxLat = location.coordinate.latitude +(radiusInKM / 111.12);

    double minLon = location.coordinate.longitude - (radiusInKM)/ fabs(cos(DEGREES_TO_RADIANS(location.coordinate.longitude))* 111.12);

    double maxLon = location.coordinate.longitude +(radiusInKM)/ fabs(cos(DEGREES_TO_RADIANS(location.coordinate.longitude))* 111.12);

答案 2 :(得分:0)

1)将度数转换为Radians的宏:

#define DEGREES_TO_RADIANS(degrees) (degrees / 180.0 * M_PI)

2)知识管理中的raduis宏:

#define radiusInKM 5.00

3)设置最小和最大纬度,经度值

CLLocation *location;//your current location

1° latitude = 69.047 statute miles = 60 nautical miles = 111.12 kilometers

double minLat = location.coordinate.latitude - (radiusInKM/111.12);

double maxLat = location.coordinate.latitude + (radiusInKM/111.12);

double minLon = location.coordinate.longitude - (radiusInKM) / fabs(cos(DEGREES_TO_RADIANS(location.coordinate.longitude))*111.12);

double maxLon = location.coordinate.longitude + (radiusInKM) / fabs(cos(DEGREES_TO_RADIANS(location.coordinate.longitude))*111.12);