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

时间:2014-02-04 18:31:11

标签: ios map location

我正在为一家餐馆设计一款应用程序(并且主要是为了与iOS开发人员一起练习)。

对于这个餐厅信息页面(地址,电话号码等),我在底部页面添加了一个较小的地图,以显示餐厅的位置,但是:

  • 如何制作这张小地图以显示餐厅位置(我知道坐标)和
  • 如何编码,如果用户点击地图,它会切换到具有相同坐标的Apple Map应用程序。

谢谢

1 个答案:

答案 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];
}