Chcę zintegrować radar meteorologiczny na moim MapView. Proszę o pomoc przy robieniu tego zadania. Zrobiłem tak wiele googlowań, ale nie udało się. Proszę sprawdzić ten obraz, chciałem to zrobić. Jak mogę zintegrować nakładkę radaru na MapView?
Odpowiedz
Zrobiłem coś takiego dla realizacji tego zadania:
w pliku nagłówka (.h)
@interface RDViewController : UIViewController{
UIImage *image ;
}
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator;
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
w .m pliku
@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;
}
Potrzebujesz sprawdzić nakładki MapKit (MKOverlay). W twoim przypadku będziesz tworzyć MKPolygon
.
Będziesz musiał utworzyć tablicę punktów MKMap z danych pogodowych, a następnie utworzyć MKPolygon z tych punktów i dodać mapę jako nakładkę.
Istnieje przykładowy projekt Apple o nazwie HazardMap, który robi coś bardzo podobnego do tego, co próbujesz zrobić, z tym wyjątkiem, że używa danych o trzęsieniu ziemi.
Zobacz także prezentację WWWDC 2011 "Wizualizacja informacji geograficznie za pomocą MapKit". Około 30-minutowego znaku zaczynają mówić o nakładkach.
Mam nadzieję, że to pomoże.
Tak Sprawdziłem HazardMap, ale nie dostarcza ona informacji o pogodzie i pobiera pewne pliki, co jest czymś innym niż MyRequirement. Dziękuję za odpowiedź, ale mam na to api. Dziękuję raz jeszcze. –
Założono, że masz dostęp do źródłowych danych pogodowych. Możesz wypróbować http://www.programmableweb.com, aby znaleźć źródło wymaganych danych. –
Skąd wziąłeś tę metodę od Nie widzę jej w dokumentacji ---> MapOverlay * mapOverlay = [[Przypisanie MapOverlay] initWithImageData: [NSData dataWithContentsOfURL: url] withLowerLeftCoordinate: CLLocationCoordinate2DMake (21.652538062803, -127.620375523875420) withUpperRightCoordinate: CLLocationCoordinate2DMake (50,406626367301044, -66,517937876818)]; –
Musisz utworzyć niestandardową klasę, która zawiera te metody. Sprawdź te obrazy tej klasy. –
@iosRider Czy możesz sprawdzić moje pytanie związane z animowanymi gifami w mkoverlays http://stackoverflow.com/questions/20558591/animated-gi--an-mkmapview-overlay-using-mkoverlayrenderer – wigging