【问题标题】:mapview autozoom on current location automatic地图视图自动缩放当前位置自动
【发布时间】:2014-11-08 17:42:58
【问题描述】:

我有一个问题。我一直在查看堆栈溢出关于同一问题的其他答案,但我无法让它们为我工作。所以我要试着在这里问。我想要做的是当我在地图视图中并获得想要自动放大该位置的用户位置时。

h 文件

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

@interface WalkingTableViewController: UIViewController <MKMapViewDelegate>




@property (weak, nonatomic) IBOutlet MKMapView *MKMapView;







@end

m 文件

#import "WalkingTableViewController.h"


@interface UITableViewController ()

@end

@implementation WalkingTableViewController

- (void)viewDidLoad

{
    [super viewDidLoad];
    self.MKMapView.showsUserLocation=YES;
    self.MKMapView.delegate = self;
    [self.MKMapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];



}



- (IBAction)StopButton:(id)sender 

- (IBAction)StartButton:(id)sender 



@end

【问题讨论】:

  • 我想要的是它会像在 RunKeeper 应用程序中一样放大
  • 你如何“拥有用户位置”?它是通过 CLLocationManager 定期进入,还是您存储了一个值并且您只需放大一次(即当手机移动时它不会改变)。

标签: ios objective-c mkmapview zooming


【解决方案1】:

您需要做的是告诉地图视图放大一个区域。这应该可以帮助您开始:

CLLocationCoordinate2D center = _mapView.userLocation.coordinate;
MKCoordinateRegion region = MKCoordinateRegionMake(center, MKCoordinateSpanMake(2000, 2000));
[_mapView setRegion:region animated:YES];

【讨论】:

    【解决方案2】:

    如果您希望看到缩放动画,我会将代码放在 viewDidAppear 方法中,以便在显示视图控制器后动画开始。

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        CLLocationManager* tempLocationManager = [[CLLocationManager alloc] init];
        MKCoordinateRegion tRegion = MKCoordinateRegionMakeWithDistance([tempLocationManager.location coordinate], 20000, 20000);
        [self.MKMapView setRegion:tRegion animated:animated];
    }
    

    根据您的需要调整区域(缩放级别,在上例中为 20000)。

    【讨论】:

    • 我看不出这是如何工作的,至少不可靠。 tempLocationManager 没有足够的时间来获得正确的位置修复,因此除非 GPS 已经启动并运行,否则您将得到一个 nil location
    • 你是对的,位置管理器引用应该由视图控制器持有,或者 - 如果在整个应用程序中使用 - 在应用程序委托中。这就是我在使用 CLLocationManager 时所做的。在尝试为这个问题提供一个简单的代码示例时,我没有考虑过引用计数。
    猜你喜欢
    • 2013-12-17
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多