アプリのユーザー注釈を変更して、通常の青い点が表示されるようにしようとしていますが、ユーザーが向いている方向を示すために三角形が表示されます (マップ全体よりもユーザー注釈を回転させたいと思います)。 、これは MKUserTrackingModeFollowWithHeading が行うことです)。初歩的なバージョンが動作していますが、奇妙な動作があります。
まず、いくつかのコード:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]]) {
_userLocationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"userLocationIdentifier"];
//use a custom image for the user annotation
_userLocationView.image = [UIImage imageNamed:@"userLocationCompass.png"];
return _userLocationView;
} else {
return nil;
}
}
-(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
//rotate user location annotation based on heading from location manager.
if (!_locatorButton.hidden) {
CLLocationDirection direction = newHeading.magneticHeading;
CGAffineTransform transform = CGAffineTransformMakeRotation(degreesToRadians(direction));
_userLocationView.transform = transform;
}
}
-(void)GPSButtonPressed:(id)sender {
if (self.GPSEnabled) {
//if GPS is already on, disable it.
_mapview.showsUserLocation = NO;
[_mapview removeAnnotation:_mapview.userLocation];
self.GPSEnabled = NO;
[_locationManager stopUpdatingHeading];
} else {
//enable GPS.
_mapview.showsUserLocation = YES;
self.GPSEnabled = YES;
if ([CLLocationManager headingAvailable]) {
[_locationManager startUpdatingHeading];
}
}
}
ユーザーの場所の注釈画像は正常に表示され、見出しに基づいて回転しますが、奇妙な動作は次のとおりです。
1- 注釈が自分の位置に追従しません。注釈は 1 か所にしか留まりませんが、正しい見出しで回転します。「GPS ボタン」で GPS をオフにしてから再度オンにすると、注釈は正しい場所に表示されますが、歩いても追跡できません。
2- 地図をスクロールすると、注釈が真北に戻り、すぐに正しい方向に回転するため、ちらつきが発生します。
3- GPS をオフにしてユーザーの位置を削除すると、注釈は意図したとおりに削除されますが、マップをスクロールすると、注釈が非表示になるのではなく画面に戻ります。
私は何を間違っていますか?役立つヒントをありがとう!