快速将单引脚添加到MKMapView?

fuz*_*oat 61 iphone cocoa-touch objective-c mkmapview

我有一个GPS坐标(纬度,经度),我很快就想在显示该位置的MKMapView上放置一个引脚.一切都运行得很好,但因为我只需要一个没有标注的单个引脚是否有更快的方法来做到这一点,或者我在下面需要做什么?

- (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;
}
Run Code Online (Sandbox Code Playgroud)

注意:我不需要检查可重复使用的注释视图,因为我只使用引脚在详细视图中显示位置(在下次请求详细视图时销毁并重新创建).

nev*_*ing 122

而不是使用该-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];
Run Code Online (Sandbox Code Playgroud)

Swift版本:

let annotation = MKPointAnnotation()
let centerCoordinate = CLLocationCoordinate2D(latitude: 41, longitude:29)
annotation.coordinate = centerCoordinate
annotation.title = "Title"
mapView.addAnnotation(annotation)
Run Code Online (Sandbox Code Playgroud)

  • 是否可以设置MKPointAnnotation的下拉动画? (2认同)

Hos*_*eeb 37

您可以像这样设置点和区域:

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];
Run Code Online (Sandbox Code Playgroud)


far*_*bel 7

MKMapView中添加引脚的Swift版本:

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

聚焦区域或别针的快速版本

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

要了解更多详细信息,请访问“ 使用Swift加载MKMapView ”。


Mr.*_*ani 7

只需添加即可,如下所示:

    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)
Run Code Online (Sandbox Code Playgroud)

看起来像:


小智 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];
Run Code Online (Sandbox Code Playgroud)


小智 4

由于您想要为掉落设置动画,因此您需要按照viewForAnnotation您所做的那样实现,因为该属性是NO默认的。

如果您不需要为放置设置动画,则可以完全消除方法实现并禁用标注,在添加注释时viewForAnnotation将注释设置为 nil 或空白。title

如果您确实需要大头针掉落动画并且还显示用户的位置(蓝点),那么您还需要检查MKUserLocationinviewForAnnotation并 return nil

否则,您可以删除整个viewForAnnotation方法,默认的红色图钉将出现,但不带动画,标注将显示(如果title不为空),并且用户位置将显示为蓝点。