8

我想在我的 MapView 上集成天气雷达。请任何人帮忙完成这项任务。我已经做了很多谷歌搜索但没有成功。请检查我想做的这张图片。 在此处输入图像描述

4

2 回答 2

3

您需要调查 MapKit 叠加层(MKOverlay)。在您的情况下,您将创建一个MKPolygon.

您将需要从天气雷达数据创建一个 MKMapPoints 数组,然后从这些点创建一个 MKPolygon 并将其添加为您的地图作为叠加层。

有一个名为HazardMap的示例 Apple 项目,它的作用与您尝试做的非常相似,除了在这种情况下它使用的是地震数据。

另请查看 WWWDC 2011 演示文稿“使用 MapKit 在地理上可视化信息”。在 30 分钟左右,他们开始谈论 Overlays。

希望这可以帮助。

于 2012-03-08T12:03:33.720 回答
3

为了完成这项任务,我做了这样的事情:

在头文件(.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;

}

在此处输入图像描述 在此处输入图像描述

于 2012-03-27T15:35:09.040 回答