Determinar si el punto está dentro del radio

¿Cuál es la mejor manera de determinar si un punto X está en el radio de 100 metros del punto Y?

¿Existe un método en CLLocation?

Muchas Gracias

preguntado el 31 de enero de 12 a las 08:01

calcule la distancia entre los dos lat / long y compárelo con 100 para ver si es menos de 100 para su caso. -

El marco CoreLocation contiene métodos para resolver esto, asumiendo que está trabajando con coordenadas de latitudes y longitudes. Consulte esta publicación para obtener más información: stackoverflow.com/questions/9029445/… -

2 Respuestas

ver

- (CLLocationDistance) distanceFromLocation:(const CLLocation *)location

documentación

Calcula la distancia de otro CLLocation objeto.

Respondido el 31 de enero de 12 a las 12:01

puedes usar este método:

// proximity distance calculation
static const double kDegToRad = 0.017453292519943295769236907684886;
static const double kEarthRadiusM = 6372797.560856;

+ (double)distanceInMetersFromLoc:(CLLocation *)from toLoc:(CLLocation *)to
{
    return kEarthRadiusM * [self radianArcFrom:from.coordinate to:to.coordinate];
}

+ (double)radianArcFrom:(CLLocationCoordinate2D)from to:(CLLocationCoordinate2D)to
{
    double latitudeArc  = (from.latitude - to.latitude) * kDegToRad;
    double longitudeArc = (from.longitude - to.longitude) * kDegToRad;
    double latitudeHS = sin(latitudeArc * 0.5);
    latitudeHS *= latitudeHS;
    double lontitudeHS = sin(longitudeArc * 0.5);
    lontitudeHS *= lontitudeHS;
    double factor = cos(from.latitude * kDegToRad) * cos(to.latitude * kDegToRad);  
    return 2.0 * asin(sqrt(latitudeHS + factor * lontitudeHS));
}

Compare la distancia como

if([distanceInMetersFromLoc:location1 to:location2] < 100)
{
   // your condition is satisfied. you can write your code here
}

Respondido el 31 de enero de 12 a las 12:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.