如何放大用户当前位置?

Posted

技术标签:

【中文标题】如何放大用户当前位置?【英文标题】:How to zoom into user current location? 【发布时间】:2013-04-05 11:57:38 【问题描述】:

当应用在 MapKit 中启动时,我想放大用户当前位置。 这是我的代码(在 viewDidLoad 函数中):

Locate=[[CLLocationManager alloc]init];
Locate.delegate=self;
Locate.desiredAccuracy=kCLLocationAccuracyBestForNavigation;
Locate.distanceFilter=kCLDistanceFilterNone;
[Locate startUpdatingLocation];
[super viewDidLoad];

//Region
MKCoordinateRegion myRegion;

//Center
CLLocationCoordinate2D center;
center.latitude=Locate.location.coordinate.latitude;
center.longitude=Locate.location.coordinate.longitude;

//Span
MKCoordinateSpan span;
span.latitudeDelta=0.3f;
span.longitudeDelta=0.3f;
//Set Region
myRegion.center=center;
myRegion.span=span;
[_MyMap setRegion:myRegion animated:YES];

我还使用与之前相同的代码实现了didUpdateLocation 函数。 问题是当用户位置改变时(当用户移动时)屏幕会放大他但我不能移动屏幕,如果我尝试移动它会立即返回用户位置,所以我不能查看整个地图。

【问题讨论】:

–locationManager:didUpdateLocations:方法中,获得位置后,尝试stopUpdatingLocation,或者避免每次收到回调时都运行缩放过程。 【参考方案1】:

要缩放地图,您必须更改区域值意味着中心和跨度。一旦看到这个Mapview Zoom

在我的情况下,当我点击特定按钮时,我使用这个来移动地图。

MKCoordinateSpan span = MKCoordinateSpanMake(30.5982f,0.0001f);
        CLLocationCoordinate2D coordinate = 36, 90;
        MKCoordinateRegion region = coordinate, span;
        MKCoordinateRegion regionThatFits = [self.mapView regionThatFits:region];
        [self.mapView setRegion:regionThatFits animated:YES];

【讨论】:

该应用可以完美缩放,但问题是除了当前用户位置之外,我无法将地图移动到任何地方。当我尝试移动地图时,它会立即返回用户当前位置。【参考方案2】:

我通过添加 touchesMoved 函数解决了这个问题,并且我停止在这个函数中更新 Location。 解决了。​​

【讨论】:

以上是关于如何放大用户当前位置?的主要内容,如果未能解决你的问题,请参考以下文章

放大显示的当前用户位置

在不限制滚动的情况下放大当前用户在 MapView 上的位置?

放大用户位置 - Swift

在 iPhone 上更新/放大到当前位置

无法让 MapView 放大当前位置 - SWIFT

使用 GLM 功能放大 OpenGL 中的当前鼠标位置