Как я могу интегрировать наложение радара на MapView? - PullRequest
8 голосов
/ 05 марта 2012

Я хочу интегрировать метеорологический радар в свой MapView. Пожалуйста, помогите кому-нибудь в выполнении этой задачи. Я много гуглил, но не добился успеха. Пожалуйста, проверьте это изображение, которое я хотел сделать следующим образом. enter image description here

Ответы [ 2 ]

3 голосов
/ 27 марта 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;

}

enter image description here enter image description here

3 голосов
/ 08 марта 2012

Вам необходимо изучить наложения MapKit ( MKOverlay ). В вашем случае вы будете создавать MKPolygon.

Вам нужно будет создать массив MKMapPoints из ваших данных метеорологического радара, затем создать MKPolygon из этих точек и добавить его в качестве наложения.

Существует пример проекта Apple под названием HazardMap , который делает нечто очень похожее на то, что вы пытаетесь сделать, за исключением того, что в этом случае используются данные о землетрясениях.

Также ознакомьтесь с презентацией WWWDC 2011 "Географическая визуализация информации с помощью MapKit". Примерно через 30 минут они начинают говорить об оверлеях.

Надеюсь, это поможет.

...