快速添加单引脚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; }
注意:我不需要检查可重用的注释视图,因为我只使用该针在详细视图中显示一个位置(在下一次请求详细视图时,该视图被破坏并重新创build)。
而不是使用-mapView:viewForAnnotation:
方法,只需将MKPointAnnotation
的代码放入-viewDidLoad
方法即可。 它不会animation的下降,但它很容易。
// 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)
你可以像这样设置点和区域:
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];
最简单最简单的方法放置图钉并在地图视图中显示当前位置是简单地添加此代码在您的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];
既然你想animation的下降,你将需要实现viewForAnnotation
像你所做的,因为该属性是默认为NO
。
如果不需要animation放置,可以完全取消viewForAnnotation
方法实现,并禁用标注,而是在添加注释时将标注的title
设置为零或空白。
如果您确实需要放置animation,并且还显示用户的位置(蓝点),则还需要检查viewForAnnotation
MKUserLocation
并返回nil
。
否则,您可以删除整个viewForAnnotation
方法,并且默认的红色别针将不显示animation,标注将显示title
是否不为空,用户位置将显示为蓝色圆点。
在MKMapView中添加pin的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) }
迅速版本的重点地区或销
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 ”。