web-dev-qa-db-ja.com

単一のピンをMKMapViewにすばやく追加しますか?

GPS座標(緯度、経度)があり、その位置を示す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;
}

注意:ピンを使用して詳細ビューの位置を表示するだけなので、再利用可能な注釈ビューを確認する必要はありません(詳細ビューが次に要求されたときに破棄され、再作成されます)。

61
fuzzygoat

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

Swiftバージョン:

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

次のようにポイントとリージョンを設定できます。

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];
37
Hossam Ghareeb

単純に次のように追加できます。

    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)

次のようになります。

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];
6
Ankit Goyal

MKMapViewの追加ピンの迅速なバージョン:

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
}

詳細については、「 Swiftを使用してMKMapViewをロード 」にアクセスしてください。

6
farhad rubel

ドロップをアニメーション化するため、そのプロパティはデフォルトでviewForAnnotationであるため、NOを実装する必要があります。

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

ピンドロップアニメーションが必要で、ユーザーの位置(青い点)も表示している場合は、MKUserLocationviewForAnnotationを確認し、nilを返す必要もあります。

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

4
user467105