У меня есть объект CLLocation, который содержит текущее местоположение пользователя, и у меня есть 4 пары lat/long для каждого угла прямоугольника, который может быть под углом. Теперь я хочу проверить, находятся ли координаты CLLocation внутри этого прямоугольника.ios: lat/long внутри прямоугольника
Ниже приведены координаты прямоугольника
#define NorthEast_LAT 51.514894
#define NorthEast_LNG -0.135306
#define SouthEast_LAT 51.514831
#define SouthEast_LNG -0.135153
#define NorthWest_LAT 51.514719
#define NorthWest_LNG -0.135858
#define SouthWest_LAT 51.514556
#define SouthWest_LNG -0.135714
Я попытался следующий код, но я думаю, что это будет работать только тогда, когда угол прямоугольника 0 град.
BOOL withinRect = [delegate.CLController latlngWithInBox:location
point1:CLLocationCoordinate2DMake(NorthEast_LAT, NorthEast_LNG)
point2:CLLocationCoordinate2DMake(SouthEast_LAT, SouthEast_LNG)
point3:CLLocationCoordinate2DMake(NorthWest_LAT, NorthWest_LNG)
point4:CLLocationCoordinate2DMake(SouthWest_LAT, SouthWest_LNG)];
- (BOOL) latlngWithInBox:(CLLocation *)position point1:(CLLocationCoordinate2D)point1 point2:(CLLocationCoordinate2D)point2 point3:(CLLocationCoordinate2D)point3 point4:(CLLocationCoordinate2D)point4 {
if (position.coordinate.latitude >= point3.latitude && position.coordinate.latitude <= point2.latitude
&& position.coordinate.longitude >= point3.longitude && position.coordinate.longitude <= point2.longitude) {
return YES;
}
return NO;
}
Ewwww ... одно предложение заключается в использовании 'CLLocationCoordinate2D' вместо массивов NSNumbers первой. Это сделает ваш код намного понятнее. Кроме того, вы не учитываете «point1» и «point2». – DarkDust
да я должен изменить код для передачи CLLocationCoordinate2D вместо массивов –
код изменен ... –