我不知道从哪里开始,但我想知道是否可以这样做。我知道如何将mapview中的注释放在中心。这就是我到目前为止所做的。如果有人知道如何在我改变地区时将注释调整到地图的中心,我会非常感激。
- (IBAction)recenter:(id)sender {
MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
pa.coordinate = mapView.centerCoordinate;
pa.title = @"Map Center";
pa.subtitle = [NSString stringWithFormat:@"%f, %f", pa.coordinate.latitude, pa.coordinate.longitude];
[mapView addAnnotation:pa];
self.centerAnnotation = pa;
}
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
centerAnnotation.coordinate = self.mapView.centerCoordinate;
centerAnnotation.subtitle = [NSString stringWithFormat:@"%f, %f", centerAnnotation.coordinate.latitude, centerAnnotation.coordinate.longitude];
}
答案 0 :(得分:1)
所以注释并没有真正与一个特定的坐标相关联?您始终可以创建MKPinAnnotationView
的实例,并将其作为子视图(而不是注释)添加到地图视图中。由于它是UIView
的子视图,因此应该可以正常工作。
答案 1 :(得分:1)
不是使用注释,而是将子视图添加到包含地图的视图中,并将2个视图的center
设置为彼此相等。当用户平移地图时,它看起来就像是注释正在移动。
然后,只要您需要找到中心“注释”指向的坐标,就可以使用地图视图的centerCoordinate
属性。
我已经在地图框和谷歌地图中完成了这项工作,但在MapKit中没有这样做,但我认为它应该可以正常工作。
答案 2 :(得分:0)
SWIFT 4
您可以使用以下代码,但不能保留在中心,仅用于中心注释:
// set 20% less latitude under the center point
userLocation.latitude = userLocation.latitude - self.mapView.region.span.latitudeDelta * -0.20
// You can use this method to center map or others...
let viewRegion = MKCoordinateRegion(center: userLocationModified, span: coordinateSpan)
mapView.setRegion(viewRegion, animated: true)
如果需要添加静态视图,则可以添加一个简单的子视图。