iOS – MKMapView – 可拖动注释
我已经准备好了注释,但是试图找出如何使用我的代码拖动它:
-(IBAction) updateLocation:(id)sender{ MKCoordinateRegion newRegion; newRegion.center.latitude = mapView.userLocation.location.coordinate.latitude; newRegion.center.longitude = mapView.userLocation.location.coordinate.longitude; newRegion.span.latitudeDelta = 0.0004f; newRegion.span.longitudeDelta = 0.0004f; [mapView setRegion: newRegion animated: YES]; CLLocationCoordinate2D coordinate; coordinate.latitude = mapView.userLocation.location.coordinate.latitude; coordinate.longitude = mapView.userLocation.location.coordinate.longitude; MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; [annotation setCoordinate: coordinate]; [annotation setTitle: @"Your Car is parked here"]; [annotation setSubtitle: @"Come here for pepsi"]; [mapView addAnnotation: annotation]; [mapView setZoomEnabled: YES]; [mapView setScrollEnabled: YES]; }
提前致谢!
要使注释可拖动,请将注释视图的 draggable
属性设置为YES
。
这通常在viewForAnnotation
委托方法中完成。
例如:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) return nil; static NSString *reuseId = @"pin"; MKPinAnnotationView *pav = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId]; if (pav == nil) { pav = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId]; pav.draggable = YES; pav.canShowCallout = YES; } else { pav.annotation = annotation; } return pav; }
如果您需要处理用户停止拖动并删除注释时,请参阅:
如何pipe理在iOS上的MKAnnotationView的拖放?
另外,你的注解对象(实现MKAnnotation
)应该有一个可设置的coordinate
属性。 您正在使用执行setCoordinate
的MKPointAnnotation
类,以便部分已经被处理。
- NSDateFormatter不显示“z”或“zzz”说明符的“Asia / Kolkata”的时区缩写,只是GMT偏移量
- 在iOS8 WebView中删除“自定义键盘”的“下一个/上一个”button(inputAccessoryView)