Создать квадратное наложение, покрывающее текущую область в MKMapView

Как я могу создать квадратное наложение, которое будет охватывать текущую область моего MKMapView. Мой MKMapView установлен с координатами текущего местоположения пользователей, но они являются координатами центра. Как рассчитать квадратные координаты, чтобы создать квадратное наложение, идеально вписывающееся в текущий вид?

Спасибо, парни!


person Stephen Bennett    schedule 03.05.2014    source источник


Ответы (1)


Вы можете использовать свойства centerCoordinate и region для MKMapView, а затем создать наложение MKPolygon, извлекая четыре угла, как в приведенном ниже коде:

    vertex[0]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude+map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude-map.region.span.longitudeDelta/2.);
    vertex[1]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude+map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude+map.region.span.longitudeDelta/2.);
    vertex[2]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude-map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude+map.region.span.longitudeDelta/2.);
    vertex[3]=CLLocationCoordinate2DMake(map.centerCoordinate.latitude-map.region.span.latitudeDelta/2.,map.centerCoordinate.longitude-map.region.span.longitudeDelta/2.);
    MKPolygon *square = [MKPolygon polygonWithCoordinates:vertex count:4];

Затем вы добавляете многоугольник в качестве наложения:

[map addOverlay:square]

Наконец, в вашем mapView:rendererForOverlay: вы определяете свой квадрат, отображаемый на основе наложения многоугольника:

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay {  
    if([overlay isKindOfClass:[MKPolygon class]]) {
        MKPolygonRenderer *renderer = [[MKPolygonRenderer alloc] initWithPolygon:(MKPolygon *)overlay];
        renderer.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.25];
        return renderer;
    } else {
        return nil;
    }    
}
person viggio24    schedule 03.05.2014
comment
Вы не представляете, как сильно вы мне помогли! Большое спасибо! Я очень ценю это! - person Stephen Bennett; 04.05.2014