Я хочу интегрировать метеорологический радар в свой MapView. Пожалуйста, помогите с выполнением этой задачи. Я так много гуглил, но не добился успеха. Пожалуйста, проверьте это изображение, которое я хотел сделать так.
Как я могу интегрировать наложение радара в MapView?
Ответы (2)
Вам необходимо изучить оверлеи MapKit (MKOverlay). В вашем случае вы будете создавать файл MKPolygon
.
Вам нужно будет создать массив MKMapPoints из данных вашего метеорадара, затем создать MKPolygon из этих точек и добавить его на карту в качестве наложения.
Существует пример проекта Apple под названием HazardMap, который что-то очень похожее на то, что вы пытаетесь сделать, за исключением того, что в этом случае используются данные о землетрясениях.
Также ознакомьтесь с презентацией WWWDC 2011 «Географическая визуализация информации с помощью MapKit». Примерно на 30-й минуте они начинают говорить об оверлеях.
Надеюсь это поможет.
person
Andy Sinclair
schedule
08.03.2012
да, я проверил HazardMap, но он не предоставляет информацию о погоде и берет некоторые файлы, которые отличаются от MyRequirement. Спасибо за ответ, но у меня есть API для этого. Еще раз спасибо.
- person Ankit Vyas; 08.03.2012
Я предположил, что у вас есть доступ к исходным данным о погоде. Вы можете попробовать programmableweb.com, чтобы найти источник необходимых вам данных.
- person Andy Sinclair; 08.03.2012
Я сделал что-то вроде этого для достижения этой задачи:
в заголовочном файле (.h)
@interface RDViewController : UIViewController{
UIImage *image ;
}
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator;
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
в файле .m
@implementation RDViewController
@synthesize mapView;
@synthesize activityIndicator;
@synthesize imageView;
- (void)viewDidLoad
{
NSURL *url = [NSURL URLWithString:
@"http://radar.weather.gov/ridge/Conus/RadarImg/latest_radaronly.gif"];
MapOverlay * mapOverlay = [[MapOverlay alloc] initWithImageData:[NSData dataWithContentsOfURL:url] withLowerLeftCoordinate:CLLocationCoordinate2DMake(21.652538062803, -127.620375523875420) withUpperRightCoordinate:CLLocationCoordinate2DMake(50.406626367301044, -66.517937876818)];
//<LatLonBox><north>50.406626367301044</north><south>21.652538062803</south><east>-66.517937876818</east><west>-127.620375523875420</west></LatLonBox>
[mapView addOverlay:mapOverlay];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setImageView:nil];
[self setMapView:nil];
[self setActivityIndicator:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}
#pragma Mark - MKOverlayDelgateMethods
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MapOverlay *mapOverlay = overlay;
MapOverlayView *mapOverlayView = [[MapOverlayView alloc] initWithOverlay:mapOverlay];
return mapOverlayView;
}
person
Ankit Vyas
schedule
27.03.2012
Откуда вы взяли этот метод, я не вижу его в документации ---> MapOverlay * mapOverlay = [[MapOverlay alloc] initWithImageData:[NSData dataWithContentsOfURL:url] withLowerLeftCoordinate:CLLocationCoordinate2DMake(21.652538062803, -127.620375523875420) withLowerRightCoordinate:CLUpperRightCoordinate: 50,406626367301044, -66,517937876818)];
- person MB.; 30.03.2012
Вы должны создать собственный класс, который содержит эти методы. Пожалуйста, проверьте эти изображения этого класса.
- person Ankit Vyas; 09.05.2012
@iosRider Не могли бы вы проверить мой вопрос, связанный с анимированными GIF-файлами в mkoverlays stackoverflow.com/questions/20558591/
- person wigging; 13.12.2013