我正在为一家餐馆设计一款应用程序(并且主要是为了与iOS开发人员一起练习)。
对于这个餐厅信息页面(地址,电话号码等),我在底部页面添加了一个较小的地图,以显示餐厅的位置,但是:
谢谢
答案 0 :(得分:0)
您必须使用MKMapViewDelegate
文件中的viewcontroller.h
并使用ma委托的方法来处理地图。
尝试使用以下代码添加餐厅的图钉并将地图置于其中心。
MKAnnotationView *point = [[MKAnnotationView alloc] initWithAnnotation:_station reuseIdentifier:@"restaurant"];
[map addAnnotation:point.annotation];
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta = 0.002;
span.longitudeDelta = 0.002;
region.span = span;
region.center = location.coordinate;
[map setRegion:region animated:YES];
之后,实施didSelectAnnotationView
方法识别按下的引脚。在其中,您可以在餐厅的坐标上打开Apple Map:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
NSString *title = @"title";
float latitude = ...;
float longitude = ...;
int zoom = 13;
NSString *stringURL = [NSString stringWithFormat:@"http://maps.apple.com?q=%@@%1.6f,%1.6f&z=%d", title, latitude, longitude, zoom];
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
}
编辑:
我正在使用类似于你的应用程序,但在我的情况下是关于工作站。
MDStationController
是视图的控制器,其中包含顶部的地图(与您的一样)。 MDStation
是电台。
// MDStationController.h
#import <UIKit/UIKit.h>
#import "MDStation.h"
#import <MapKit/MapKit.h>
@interface MDStationController : UIViewController <MKMapViewDelegate>
@property (nonatomic, retain) MDStation* station;
@end
// MDStationController.m
@implementation MDStationController
@synthesize station=_station;
[...]
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title = _station.name;
stationView.map.delegate = self;
[self addAndcenterMapOnLocation:_station.location];
}
- (void) addAndcenterMapOnLocation:(CLLocation*)location {
MKAnnotationView *point = [[MKAnnotationView alloc] initWithAnnotation:_station reuseIdentifier:@"station"];
[stationView.map addAnnotation:point.annotation];
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta = 0.002;
span.longitudeDelta = 0.002;
region.span = span;
region.center = location.coordinate;
[stationView.map setRegion:region animated:YES];
}
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
static NSString *defaultID = @"station";
MKAnnotationView *pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultID];
pinView.image = [UIImage imageNamed:@"bike_gray"];
return pinView;
}
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
NSString *title = _station.name;
float latitude = _station.location.latitude;
float longitude = _station.location.longitude;
int zoom = 13;
NSString *stringURL = [NSString stringWithFormat:@"http://maps.apple.com?q=%@@%1.6f,%1.6f&z=%d", title, latitude, longitude, zoom];
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
}