【问题标题】:how to start off with "my" coordinates from MKCoordinateRegion?如何从 MKCoordinateRegion 中的“我的”坐标开始?
【发布时间】:2011-08-01 10:24:01
【问题描述】:

我想知道如何使这段代码工作:当我单击一个单元格时,我调用 DetailViewController,它是一张带有旧金山坐标的地图。但是我的地图只显示“世界”地图,并没有去我设置的区域,你知道我如何从“我的”坐标开始吗?

这是我的代码:

#import "DetailViewController.h"

@implementation DetailViewController

@synthesize mapView;

- (void) gotoLocation {
    NSLog(@"allo");

    //start off in San Francisco
    MKCoordinateRegion region;
    region.center.latitude = 37.786996;
    region.center.longitude = -122.440100;
    region.span.latitudeDelta = 0.112872;
    region.span.longitudeDelta = 0.109863;

    [self.mapView setRegion:region animated:YES];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self gotoLocation];
}

- (void)dealloc {
    [super dealloc];
    [mapView release];
}

- (void)viewDidUnload {
    [super viewDidUnload];
    self.mapView = nil;
}

@end

谢谢

保罗

【问题讨论】:

    标签: objective-c mkmapview mkcoordinateregion


    【解决方案1】:
    - (void)viewDidLoad{
    [super viewDidLoad];
    
    // define span for map: how much area will be shown
    MKCoordinateSpan span;
    span.latitudeDelta = 0.002;
    span.longitudeDelta = 0.002;
    
    // define starting point for map
    CLLocationCoordinate2D start;
    start.latitude = 37.786996;
    start.longitude = 0.109863;
    
    // create region, consisting of span and location
    MKCoordinateRegion region;
    region.span = span;
    region.center = start;
    
    // move the map to our location
    [self.mapView setRegion:region animated:YES];
    

    }

    【讨论】:

    • 谢谢rich,我忘了在mapView中使用IB,无论如何感谢您的解释!另外,你怎么知道世界上某个特定点的纬度和经度?我复制并粘贴了 SF 坐标,但你怎么知道“罗马”或“布宜诺斯艾利斯”?谷歌地图的东西......?
    • 使用这个网站geonames.org获取罗马、布宜诺斯艾利斯等地的数据,或者如果你想在你的应用程序中使用它,你可以编写一些代码来查询它
    • 嗨,丰富的,您能告诉我您如何使用您在评论中提供的网站上的坐标,例如:对于里约热内卢:纬度:S 22° 54' 10'',进入这在 Xcode 中:newRegion.center.latitude = 37.786996; ?非常感谢
    • 这正是您正在寻找的,它会为您提供 MapKit 采用的浮点值 itouchmap.com/latlong.html 我也可以获得帮助吗?
    • 是的,我刚注册,以前不能注册,非常感谢链接!
    【解决方案2】:

    既然您看到了世界地图,那么地图视图的框架必须没问题,并且设置区域的代码应该可以工作。

    setRegion 调用不起作用的最可能原因是mapView IBOutlet 未连接到 xib 中的地图视图控件。在 IB 中,右键单击 File's Owner 并将mapView 出口连接到地图视图控件。

    您可能还希望将地图视图控件的delegate 出口连接到文件的所有者,以便调用您(稍后)实现的任何委托方法。

    另外(与您的问题无关),在dealloc 中,[super dealloc] 应该最后调用。请参阅this answer 了解说明。

    【讨论】:

    • 感谢 Anna 的精彩回答!我不知道超级dealloc,也谢谢你。好的,它工作得很好!
    【解决方案3】:

    在设置区域之前需要设置框架,看起来你正在使用 IB 实例化地图视图,所以你应该将 setRegion 消息放入 viewDidAppear: 并将其放入 DetailViewController。

    -(void)viewDidAppear {
        MKCoordinateRegion region;
        region.center.latitude = 37.786996;
        region.center.longitude = -122.440100;
        region.span.latitudeDelta = 0.112872;
        region.span.longitudeDelta = 0.109863;
        [self.mapView setRegion:region animated:YES];
    }
    

    你可以在设置区域之前做这样的事情(可能不起作用)

    self.mapView.frame = self.view.bounds
    

    【讨论】:

    • 感谢您的回答,实际上我忘记在 IB 中链接 mapView。还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2021-04-17
    • 2013-12-25
    相关资源
    最近更新 更多