我有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
答案 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)
希望这有帮助。