Как я уже говорил, есть проблема с одной аннотацией.Если вы извлекаете места из поиска Google, то для каждого места указывается приблизительный уровень увеличения (в зависимости от того, является ли это страна / город).Вы можете попробовать, набрав http://maps.google.com/maps/geo?q=asia&output=json
в вашем браузере.Вы можете попробовать разные записи, заменив Азию на Китай или Нью-Йорк и т. д. Посмотрите на атрибут ответа Accuracy
в браузере.Это будет 0 для континентов, 1 для стран и т. Д.
Если вы сами создали аннотации, вы можете прикрепить к нему параметр, который будет относиться к уровню увеличения.
@interface AddressAnnotation : NSObject<MKAnnotation> {
double zoomLevel;
}
@property(readwrite,nonatomic) double zoomLevel ;
@end
@implementation AddressAnnotation
@synthesize zoomLevel;
-(void)setZoomLevel (double) parameter
{
self.zoomLevel = parameter;
}
@end
и, наконец,если предположить, что annot является вашей аннотацией, то
[annot setZoomLevel: .1]; //instead of .1 you can set different values
при отображении этой аннотации задайте центр области в качестве координаты аннотации и установите span в качестве annotation.zoomLevel.
MKCoordinateRegion region;
region.center.latitude = annotation.coordinate.latitude;
region.center.longitude = annotation.coordinate.longitude;
region.span.latitudeDelta = annotation.zoomLevel;
region.span.longitudeDelta = annotation.zoomLevel;