菜鸟教程小白 发表于 2022-12-12 15:11:33

ios - MKMapCamera 旋转时不尊重 map 框


                                            <p><p>我正在使用简单的 NSTimer 以编程方式旋转 MKMapView,以不断增加 MKMapCamera 的标题属性,该属性按预期工作(导致 map 围绕华盛顿纪念碑缓慢旋转)。 </p>

<p>我希望它围绕 map 底部旋转,而不是让 map 围绕其中心旋转。解决方案应该很简单,将 map 的高度加倍,然后围绕其中心旋转,该中心现在位于屏幕底部。将 map 高度加倍后,它仍然围绕屏幕中心而不是 map 框的中心旋转。</p>

<p>苹果似乎在 MKMapView 中添加了额外的逻辑,以保持右下角的“法律”标签,无论 map 框是什么,我认为这也是导致此问题的原因。</p>

<p>任何想法如何强制 map 围绕 map 底部而不是中心旋转?</p>

<pre><code>- (void)setupMap {

    // Works as expected (rotates around center of screen)
    CGRect mapFrame = self.view.bounds; // works as expected

    // Doesn&#39;t work as expected (also rotates around the center of the screen)
    //mapFrame.size.height = self.view.frame.size.height*2;

    // Create/show MKMapView
    testMapView = [ initWithFrame:mapFrame];
    ;

    // Zoom into the Washington Monument with a pitch of 60°
    MKMapCamera *aCamera = ;
    ;
    ;
    ;
    ;

    // Begin rotating map every 1/10th of a second
    NSTimer *aTimer = ;
    [ addTimer:aTimer forMode:NSDefaultRunLoopMode];
}

- (void)rotateMap {
    MKMapCamera *aCamera = ;
    ;
    ;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我意识到这是一个较老的问题,但这是一个非常令人沮丧的问题。 Autolayout 和 MapKit 在幕后做了一些时髦的事情。我注意到 mapView 渲染会自动将我的 mapView 居中以将用户位置放在屏幕中心。在我这样做之前,没有多少偏移、约束、变换、 superView 可以使 map 不在屏幕中心。</p>

<pre><code>- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
    CLLocationDegrees heading = newHeading.trueHeading &gt;= 0 ? newHeading.trueHeading : newHeading.magneticHeading;

    //ACCOUNT FOR LANDSCAPE ORIENTATION IN HEADING
    if(self.interfaceOrientation == UIInterfaceOrientationLandscapeRight){
            heading += 180;
            if(heading &gt; 360) heading -= 360;
    }

    //OFFSET MAP
    CGPoint p = ;
    CGPoint p2 = CGPointMake(p.x, p.y - MAP_VERTICAL_OFFSET);
    CLLocationCoordinate2D t = ;

    ;
    ;
    ;

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - MKMapCamera 旋转时不尊重 map 框,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19132799/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19132799/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - MKMapCamera 旋转时不尊重 map 框