Получение границ MKMapView

Для установки запроса к внешнему серверу, я хочу получить границы текущего Представления Карты в приложении для iPhone, которое я создаю. UIView должен ответить на границы, но кажется, что MKMapView не делает. После установки региона и увеличивания карты я пытаюсь получить границы. Я застреваю на первом шаге, который должен попытаться получить CGPoints, которые представляют SE и углы NW карты. После этого я собирался использовать:

- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view

Преобразовать точки в координаты карты. Но я не могу даже получить это далеко...

//Recenter and zoom map in on search location
MKCoordinateRegion region =  {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[self.mapView setRegion:region animated:YES];


//After the new search location has been added to the map, and the map zoomed, we need to update the search bounds
//First we need to calculate the corners of the map
CGPoint se = CGPointMake(self.mapView.bounds.origin.x, mapView.bounds.origin.y);
CGPoint nw = CGPointMake((self.mapView.bounds.origin.x + mapView.bounds.size.width), (mapView.bounds.origin.y + mapView.bounds.size.height));
NSLog(@"points are: se %@, nw %@", se, nw);

Компиляции кода без предупреждений однако se и СЗ являются оба пустыми. Рассмотрение self.mapView.bounds.origin.x переменная 0. При попытке к NSLog непосредственно self.mapView.bounds.size.width дает мне, "Программа получила сигнал: “EXC_BAD_ACCESS”". который, кажется, прибывает из NSLog.

Кто-либо знает надлежащий способ получить юго-восточный угол и северо-западный угол (в координатах карты) от видимой области MKMapView?

Править: Это кажется каждый раз, когда Вы спросили что-то здесь, что ответ прибывает к Вам прямо после. Я использовал % вместо @f для печати каждой переменной в NSLog, который бросал ошибки там. Я также обнаружил annotationVisibleRect свойство MKMapview. Это кажется, хотя это annotationVisibleRect основано на родительских координатах представления.

31
задан dimpiax 20 November 2017 в 19:43
поделиться

1 ответ

Хорошо, я официально ответил на мой собственный вопрос, но так как я не нашел его нигде, прежде чем выложить ответ здесь:

//To calculate the search bounds...
//First we need to calculate the corners of the map so we get the points
CGPoint nePoint = CGPointMake(self.mapView.bounds.origin.x + mapView.bounds.size.width, mapView.bounds.origin.y);
CGPoint swPoint = CGPointMake((self.mapView.bounds.origin.x), (mapView.bounds.origin.y + mapView.bounds.size.height));

//Then transform those point into lat,lng values
CLLocationCoordinate2D neCoord;
neCoord = [mapView convertPoint:nePoint toCoordinateFromView:mapView];

CLLocationCoordinate2D swCoord;
swCoord = [mapView convertPoint:swPoint toCoordinateFromView:mapView];
75
ответ дан 27 November 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: