覆盖地图的一部分时,中心MKMapView

时间:2016-08-02 14:43:38

标签: ios objective-c mkmapview

我有MKMapView,它是从另一个视图覆盖的底部。让我们说地图的高度是250,但从底部是其他视图覆盖的100。

现在,如果我使用setRegion将地图居中,它会使地图​​居中,就像整个地图是可见的一样,但我需要将其居中到真正可见的区域,这是其余的150个高度。

你可以说,然后将地图的高度降低到150,这样它就不会被覆盖,但是我需要将它覆盖在设计上,因为覆盖视图没有完全宽度到边界(有间隙)从侧面看)因此地图在覆盖视图周围可见。

那么,如何将地图居中于真实可见区域的高度?

现在我正在使用它:

Chr Start   End Ref Alt Func.refGene    PopFreqMax  CLINSIG Classification
chr1    43395635    43395635    C   T   exonic  0.12    Benign  Benign
chr1    43396414    43396414    G   A   exonic  0.14    Benign  Benign
chr1    172410967   172410967   G   A   exonic  0.66    VUS

2 个答案:

答案 0 :(得分:1)

尝试使用:

[theMapView setVisibleMapRect:[theMapView mapRectThatFits:theMapRect]
                     animated:YES];

或者,如果您想进一步调整屏幕偏移量,可以使用:

[theMapView setVisibleMapRect:[theMapView mapRectThatFits:theMapRect]
                  edgePadding:UIEdgeInsetsMake(50, 50, 50, 50)
                     animated:YES];

答案 1 :(得分:1)

不确定你是否想过这个,但这里是swift的解决方案。应该很容易适应Obj-C

let pointYouWantCentered = CLLocationCoordinate2D(latitude: lat, longitude: lon)
pointYouWantCentered.latitude -= (mapView.region.span.latitudeDelta * 0.25)
mapView.setCenter(pointYouWantCentered, animated: true)

这将使点在屏幕的上半部分居中。只要您知道底部视图占据的屏幕部分,您就可以将地图的中心调整为您想要的点。例如,假设您有一个占据下半部分的视图,这会将该点置于屏幕上半部分的中心位置。如果您的底部视图占据了底部的1/3,并且您希望以视图的顶部2/3为中心,则可以执行以下操作。

let pointYouWantCentered = CLLocationCoordinate2D(latitude: lat, longitude: lon)
pointYouWantCentered.latitude -= (mapView.region.span.latitudeDelta * (1.0/6.0))
mapView.setCenter(pointYouWantCentered, animated: true)

希望这有帮助。