1つのピンとユーザーの場所を持つmapViewがあります。VisibleMapRect
両方のピンが見えるように設定しました。
私が抱えている問題はMKUserTrackingModeFollowWithHeading
、ユーザーに動きの動きを表示するために使用していることです。このようにrectを設定すると、動きが非常にぎくしゃくします。これは、ユーザーの位置情報ピンが地図の中央にないためだと思います。
両方のピンを表示しながら、ユーザーの位置を中央に保つにはどうすればよいですか?
これは、場所を開始してrectを設定する私のコードです。[locationManager startUpdatingLocation];
// Start heading updates.
if ([CLLocationManager headingAvailable]) {
locationManager.headingFilter = kCLHeadingFilterNone;
[locationManager startUpdatingHeading];
//set the view to fit both the pins
MKMapPoint annotationPoint = MKMapPointForCoordinate(MapView.userLocation.coordinate);
MKMapRect zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0, 0);
for (id <MKAnnotation> annotation in MapView.annotations)
{
if (![annotation isKindOfClass:[MKUserLocation class]] ) {
MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate);
MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0, 0);
zoomRect = MKMapRectUnion(zoomRect, pointRect);
}
}
NSLog(@"%f",zoomRect.size.height);
NSLog(@"%f",zoomRect.size.width);
[MapView setVisibleMapRect:zoomRect animated:NO];
}
rectを設定する部分をコメントアウトしてみましたが、ユーザーの動きがスムーズなので、問題はこのコードであることがわかります。
また、rectを使用してrect後の中心点を設定してみました
[MapView setCenterCoordinate:MapView.userLocation.coordinate animated:YES];
これはうまくいかなかったようです。また、後でこれを設定すると、他のピンが表示されなくなる可能性があります。