2012-03-27 6 views
51

私はGPS座標(緯度、経度)を持っており、その位置を示すMKMapViewにただちに1つのピンを配置したいと思います。すべてがうまく動作しますが、コールアウトのない単一のピンだけが必要なので、これを行うためのより速い方法がありますか、または以下に何が必要なのですか?MKMapViewに1つのピンをすばやく追加しますか?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
    MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"DETAILPIN_ID"]; 
    [pinView setAnimatesDrop:YES]; 
    [pinView setCanShowCallout:NO]; 
    return pinView; 
} 

NB:私は(破壊され、詳細ビューが要求され、次回に再作成されます)詳細ビュー内の位置を示すために、ピンを使用していますように私は、再利用可能な注釈ビューをチェックする必要はありません。 。

答えて

4

ドロップをアニメーション化したいので、既定ではNOであるため、ドロップした後にはviewForAnnotationを実装する必要があります。

ドロップをアニメーション化する必要がない場合は、viewForAnnotationメソッドの実装を完全に削除し、コールアウトを無効にすることができます。注釈を追加するときは注釈のtitleをnilまたは空白に設定します。

ピンドロップアニメーションが必要で、ユーザーの場所(青い点)も表示されている場合は、をviewForAnnotationにチェックし、nilに戻る必要があります。

それ以外の場合は、viewForAnnotationメソッドをすべて削除して、デフォルトの赤いピンがアニメーションなしで表示され、titleが空白でない場合にコールアウトが表示され、ユーザーの場所が青い点として表示されます。

+0

、私はviewForAnnotationを実装しないようにしてくださいでしたが、私は私のタイトルとサブタイトルの両方があったと認識していませんでしたNSStringsを指しています。私はピンのドロップにあまりにも付着していないが、私は今それがそのままそれを残すと思う。あなたの答え、非常に有用であり、確かに将来私が使用するものをありがとうございます。 – fuzzygoat

111

-mapView:viewForAnnotation:メソッドを使用する代わりに、MKPointAnnotationのコードを-viewDidLoadメソッドに入れてください。それはドロップをアニメートしませんが、非常に簡単です。

// Place a single pin 
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
[annotation setCoordinate:centerCoordinate]; 
[annotation setTitle:@"Title"]; //You can set the subtitle too 
[self.mapView addAnnotation:annotation]; 

スウィフトバージョン:

let annotation = MKPointAnnotation() 
let centerCoordinate = CLLocationCoordinate2D(latitude: 41, longitude:29) 
annotation.coordinate = centerCoordinate 
annotation.title = "Title" 
mapView.addAnnotation(annotation) 
+2

MKPointAnnotationのドロップをアニメートすることは可能ですか? – VeganKid

+0

ドロップを簡単にアニメーション化することはできません。アニメーションが必要な場合は、 'mapView:viewForAnnotation:'デリゲートメソッドを使用します。 –

6

ピンをドロップする最も簡単なと最も簡単な方法とマップビューで現在位置を表示するには、単にあなたのviewDidLoadメソッドでこのコードを追加することです。 (ユーザーの現在の場所が既にあなたによって取得されていると仮定します)。

NSString *display_coordinates=[NSString stringWithFormat:@"Latitude is %f and Longitude is %f",coordinate.longitude,coordinate.latitude]; 

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
[annotation setCoordinate:coordinate]; 
[annotation setTitle:@"Click Labs"];    
[annotation setSubtitle:display_coordinates]; 
[mapView addAnnotation:annotation]; 
32

あなたがポイントを設定しても、このような地域ができます:MKMapViewにピンを追加する

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(lat, lon); 

MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1); 
MKCoordinateRegion region = {coord, span}; 

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
[annotation setCoordinate:coord]; 

[self.staticMapView setRegion:region]; 
[self.staticMapView addAnnotation:annotation]; 
+0

ありがとうございます。 –

+0

うまく働いています!ありがとう.. – Gati

3

スウィフトバージョン:地域やピン

の焦点を合わせる

func addPin() { 
    let annotation = MKPointAnnotation() 
    let centerCoordinate = CLLocationCoordinate2D(latitude: 20.836864, longitude:-156.874269) 
    annotation.coordinate = centerCoordinate 
    annotation.title = "Lanai, Hawaii" 
    mapView.addAnnotation(annotation) 
} 

スウィフトバージョン

func focusMapView() { 
    let mapCenter = CLLocationCoordinate2DMake(20.836864, -156.874269) 
    let span = MKCoordinateSpanMake(0.1, 0.1) 
    let region = MKCoordinateRegionMake(mapCenter, span) 
    mapView.region = region 
} 

詳しくは、 "Load MKMapView using Swift"にアクセスしてください。

0

単にあなたが好きそれを追加することができます:それは次のようになります

mapView.mapType = MKMapType.standard 

    let location = CLLocationCoordinate2D(latitude: 23.0225,longitude: 72.5714) 

    let span = MKCoordinateSpanMake(0.05, 0.05) 
    let region = MKCoordinateRegion(center: location, span: span) 
    mapView.setRegion(region, animated: true) 

    let annotation = MKPointAnnotation() 
    annotation.coordinate = location 
    annotation.title = "Javed Multani" 
    annotation.subtitle = "Surat, India" 
    mapView.addAnnotation(annotation) 

:良い点厥 enter image description here

関連する問題