我有一个带有注释的应用程序,直到现在它们只是符合默认行为的符号(例如数字和字母)。它们的方向与设备的方向固定是合适的。
现在我需要一些需要在实际地图的方向上修复的注释,因此如果地图旋转,则注释符号需要随之旋转(例如,指示河流的箭头)。
我不希望它们像地图一样使用地图缩放,但我确实希望它们随地图一起旋转。
我需要一个解决方案,主要用于用户用手指手动旋转地图时,以及旋转时由于使用航向模式进行跟踪。
在Google地图上(至少在Android上)这很简单,只需一个简单的MarkerOptions.flat(true)
我确信在ios上它会变得更加困难,我希望。
提前致谢!
答案 0 :(得分:5)
这是我用于类似事物的东西。
- (void)rotateAnnotationView:(MKAnnotationView *)annotationView toHeading:(double)heading
{
// Convert mapHeading to 360 degree scale.
CGFloat mapHeading = self.mapView.camera.heading;
if (mapHeading < 0) {
mapHeading = fabs(mapHeading);
} else if (mapHeading > 0) {
mapHeading = 360 - mapHeading;
}
CGFloat offsetHeading = (heading + mapHeading);
while (offsetHeading > 360.0) {
offsetHeading -= 360.0;
}
CGFloat headingInRadians = offsetHeading * M_PI / 180;
annotationView.layer.affineTransform = CGAffineTransformMakeRotation(headingInRadians);
}
然后,这会在regionDidChange
等中调用。
不幸的是,这个解决方案在用户旋转地图时不会旋转,但它会在之后自行修正,以确保它具有正确的标题。我将一些affineTransform
包装到动画块中,使其看起来很漂亮。
希望这可以提供帮助,或者可以帮助您指明正确的方向。