#iphone #mkmapview #mkoverlay
#iPhone #mkmapview #mkoverlay
Вопрос:
Всем привет….. Я знаю, что это дублирующий вопрос, но я все еще не могу заставить его работать, и я уверен, что мне не хватает чего-то простого. Я установил делегат в IB, и вызывается regionDidChange, поэтому я знаю, что делегат MapView подключен. Однако я не могу отобразить какое-либо наложение или даже вызвать метод делегирования. Вот код:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
self.map.region = MKCoordinateRegionMakeWithDistance(
newLocation.coordinate,
milesToMeters(radius),
milesToMeters(radius)
);
self.map.centerCoordinate = newLocation.coordinate;
circle = [MKCircle circleWithCenterCoordinate:newLocation.coordinate radius:50.];
[self.map addOverlay:circle];
[locationManager stopUpdatingLocation];
}
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
NSLog(@"region did change");
}
- (MKOverlayView *)map:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay {
NSLog(@"circling");
if ([overlay isKindOfClass:[MKCirlce class]])
{
MKCircleView *circleView = [[[MKCircleView alloc] initWithCircle:overlay] autorelease];
circleView.lineWidth = 1.0;
circleView.strokeColor = [UIColor redColor];
return circleView;
}
return nil;
}
Большое спасибо. Jules
Комментарии:
1. Вызывается ли didUpdateToLocation? Вы уверены, что self.map не равен нулю (убедитесь, что его IBOutlet подключен)?
2. Да, вызывается didUpdateLocation и даже viewForAnnotation вызывается, только не viewForOverlay? Это очень странно / …. есть мысли? Большое спасибо
Ответ №1:
viewForOverlay
Метод делегирования назван неправильно. Это должно быть:
- (MKOverlayView *)mapView:(MKMapView *)map
viewForOverlay:(id <MKOverlay>)overlay {
У него должно быть имя mapView:viewForOverlay:
(не map:viewForOverlay:
).
Вы можете изменить имена внутренних параметров, но не имя метода.
Кроме того, внутри вашего viewForOverlay
метода MKCirlce
должно быть MKCircle
.
Комментарии:
1. Большое вам спасибо, я сходил с ума от этого!!