【问题标题】:Add a marker to my map在我的地图上添加标记
【发布时间】:2014-06-23 16:00:23
【问题描述】:

我是 iOS 新手,它与 Android 逻辑如此不同,以至于我找不到如何向地图添加标记:-|

我已将MKMapView 添加到我的xib

我已将此代码添加到我的 .m(已修整)

#import "AppDelegate.h"
#import <MapKit/MapKit.h>

@interface Dove ()
@property (weak,nonatomic) IBOutlet MKMapView *mappa;

@end
#define METERS_PER_MILE 1609.344
@implementation Dove
- (IBAction)vaiHome:(id)sender {
    Index *second = [[Index alloc] initWithNibName:@"Index" bundle:nil];
    [self presentViewController:second animated:YES completion:nil];
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 45.40170;
    zoomLocation.longitude= 8.91552;
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, METERS_PER_MILE, METERS_PER_MILE);
    [_mappa setRegion:viewRegion animated:YES];
    [_mappa regionThatFits:viewRegion];
}

现在,如何在该位置显示图钉?它应该很简单,但我找不到解决方案:-| 此外,地图仍保留在美国,但大部分都在标记处。

非常感谢。

【问题讨论】:

  • 请阅读 Apple 的 Location and Maps Programming Guide 的Annotating Maps 部分(也推荐使用该指南的其余部分)。简单的答案是:创建一个 MKPointAnnotation 对象,设置它的属性,然后调用 addAnnotation。仅在 SO 上就必须有数百个答案。

标签: ios map mapkit marker


【解决方案1】:

首先您必须设置注释标记(在您的 viewdidload 中调用):

- (void)setupAnnotation
{
    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 45.40170;
    zoomLocation.longitude= 8.91552;

    NARMapViewAnnotation* annot = [[NARMapViewAnnotation alloc] initWithCoord:zoomLocation];
    [_mapView addAnnotation:annot];
}

然后你必须设置 MKMapViewDelegate 方法:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
    MKAnnotationView* annotView = [views objectAtIndex:0];
    id<MKAnnotation> mp = [annotView annotation];
    MKCoordinateRegion region = [mv regionThatFits:MKCoordinateRegionMakeWithDistance([mp coordinate], REGION_WINDOW, REGION_WINDOW)];
    [mv setRegion:region animated:YES];
}

NARMapView注解:

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface NARMapViewAnnotation : NSObject <MKAnnotation>

@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

- (id)initWithCoord:(CLLocationCoordinate2D)coord;

@end

#import "NARMapViewAnnotation.h"

@implementation NARMapViewAnnotation

- (id)initWithCoord:(CLLocationCoordinate2D)coord
{
    if (self = [super init])
    {
        _coordinate = coord;
    }

    return self;
}
@end

【讨论】:

  • 抱歉,我不明白,因为我收到一个未声明的标识符 NARMapViewAnnotation 和 annot 的错误
  • 对不起。那是您创建的自定义注释标记。我会为它添加代码
  • 它告诉我在 NARMapViewAnnotation 中没有可见的 @interface initWithCoord
  • 确保您当时拼写正确?它就在 NARMapViewAnnotation 类中。
猜你喜欢
  • 2014-09-22
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2016-05-10
相关资源
最近更新 更多