在业务信息页面中将位置设置为地图



我正在为餐厅设计一个应用程序(也主要是与iOS Dev一起练习)。

对于此餐厅信息页面(地址,电话号码等),我在底部添加了一张较小的地图,以显示餐厅所在的地方:

  • 我该如何制作这张小地图以显示餐厅位置(我知道坐标)和
  • 如何对用户单击地图进行编码,它将用相同的坐标切换到Apple Map应用。

谢谢

您必须在viewcontroller.h文件中使用MKMapViewDelegate并使用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地图:

- (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];
}

最新更新