gpt4 book ai didi

ios - MKMapView 自行缩小

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:19 25 4
gpt4 key购买 nike

这是我的一个小方法,它采用位置管理器的当前位置并将 map 聚焦在其上方一点点,以便为我添加到 map 顶部的其他一些 subview 腾出空间。如果跨度的纬度/经度增量太大(超过 1.0),每次设置区域时,跨度会越来越大,直到 map 一直缩小,即使实际上没有接触 map 。我认为这与重用 map View 的跨度有关,但我不知道到底发生了什么。

- (void)setRegion {
CLLocationCoordinate2D coord = locationManager.location.coordinate;

MKCoordinateSpan span = mapView.region.span;

coord.latitude += 0.002 * (span.latitudeDelta / 0.012523);

MKCoordinateRegion region = MKCoordinateRegionMake(coord, span);
[mapViewGlobal setRegion:region animated:animated];
}

最佳答案

来自 Apple 的文档“如果您想在不更改缩放级别的情况下更改中心坐标,请改用 setCenterCoordinate:animated:。” MKMapView

- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated

MKMapView 将选择一个新区域,该区域非常适合重新定义的缩放级别,同时仍显示您的整个目标区域,并且每次您向北移动时,跨度都会发生变化并且事情会失控。

此外,您计算将纬度更改多少的方法有点奇怪。除了在有人会做这个技巧时进行乘法和除法之外,它只会在特定纬度(它们远离赤道)和特定缩放级别下工作。您最好计算出您需要 map 滚动多少像素(大概是 subview 高度的一半),然后使用此函数计算出您需要将 map 居中的位置。

- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view

另一种方法是将 subview 放在 MKMapView 之外,但这会影响您的审美。

关于ios - MKMapView 自行缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12061625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com