簡體   English   中英

一旦地圖加載,顯示帶標題(注釋)的Pin

[英]Displaying Pin with Title (annotation) once map loads

我正在開發我的第一個應用程序,在其中我只是嘗試按下按鈕單擊顯示帶引腳的地圖(以及此引腳位置上的標題)。 我能夠加載mapview並讓它顯示我想要的坐標。 但是當我試圖顯示引腳和注釋時,我遇到了問題。 不知道在哪里編碼以及如何使注釋顯示引腳。 我搜索並看過很多教程,但是大多數都顯示了不同的mapview樣式,並且在用戶選擇上顯示引腳,我想在地圖加載時顯示引腳。

這是我必須顯示正在工作的地圖但沒有引腳顯示或注釋的代碼:

FirstLocateViewController.m代碼:

#import "FirstLocateViewController.h"

@implementation FirstLocateViewController

@synthesize dismissViewButton;

-(IBAction)dismissView:(id)sender {
[self dismissModalViewControllerAnimated:YES];
}

- (void)viewDidLoad {
[super viewDidLoad];
CGRect frame = CGRectMake(0,0, 320,420);
mapView = [[MKMapView alloc] initWithFrame:frame];
mapView.mapType = MKMapTypeStandard;
CLLocationCoordinate2D coord = {latitude: 12.3456, longitude: -7.890};
MKCoordinateSpan span = {latitudeDelta: 0.05, longitudeDelta: 0.05};
MKCoordinateRegion region = {coord, span};
[mapView setRegion:region];
[self.view addSubview:mapView];

}


FirstLocateViewController.h代碼:

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <MapKit/MKAnnotation.h>


@interface FirstLocateViewController : UIViewController <MKMapViewDelegate> {
UIButton *dismissViewButton;
MKMapView *mapView;
}

@property (nonatomic, retain) IBOutlet UIButton *dismissViewButton;

- (IBAction)dismissViewButton:(id)sender;

@end

感謝您提前獲得任何重要幫助。

為此你需要創建一個注釋創建一個具有CLLocationCoordinate2D,標題,副標題的類,如.h文件

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


@interface DisplayMap : NSObject <MKAnnotation> {

    CLLocationCoordinate2D coordinate; 
    NSString *title; 
    NSString *subtitle;
}
@property (nonatomic, assign) CLLocationCoordinate2D coordinate; 
@property (nonatomic, copy) NSString *title; 
@property (nonatomic, copy) NSString *subtitle;

@end

和.m文件

#import "DisplayMap.h"


@implementation DisplayMap

@synthesize coordinate,title,subtitle;


-(void)dealloc{
    [title release];
    [super dealloc];
}

@end

然后將以下代碼添加到viewdidload

DisplayMap *ann = [[DisplayMap alloc] init]; 
ann.title=@"put title here";
ann.coordinate = region.center; 
[mapView addAnnotation:ann];

並實施以下方法

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
(id <MKAnnotation>)annotation {
    MKPinAnnotationView *pinView = nil; 
    if(annotation != mapView.userLocation) 
    {
        static NSString *defaultPinID = @"com.invasivecode.pin";
        pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
        if ( pinView == nil ) pinView = [[[MKPinAnnotationView alloc]
                                          initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];

        pinView.pinColor = MKPinAnnotationColorPurple; 
        pinView.canShowCallout = YES;
        pinView.animatesDrop = YES;
    } 
    else {
        [mapView.userLocation setTitle:@"I am here"];
    }
    return pinView;
}

遵循本教程 :給出了帶有解釋的代碼:

您需要創建一個“地圖注釋”對象 - 實際上可以是任何對象,但它必須符合MKAnnotation協議(因此您基本上可以將對象聲明為

@interface MyAnnotation: NSObject<MKAnnotation>

)。 在手冊中查看該協議,它只是3個方法和一個屬性(坐標)。 設置坐標和標題,然后將注釋添加到mapView([self.mapView addAnnotation:annotation])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM