【问题标题】:initializing the mapkit with a particular latitude and longitude Iphone用特定的经纬度 Iphone 初始化 mapkit
【发布时间】:2010-07-21 08:44:57
【问题描述】:

我正在制作一个 iphone 应用程序,该应用程序应从数组中获取纬度和经度,并应使用自定义注释/图钉定位和显示地图。我已经使用了 mapkit,方法如下:

//MapViewController.h

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

@interface MapViewController : UIViewController  <MKMapViewDelegate> {
 IBOutlet MKMapView *mapView;
 MKPlacemark *mPlacemark;
}

@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@end


//MapViewController.m

#import "MapViewController.h"
#import <MapKit/MapKit.h>

@implementation MapViewController
@synthesize mapView;


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    CLLocationCoordinate2D location = mapView.userLocation.coordinate;
    MKCoordinateRegion region;
    MKCoordinateSpan span;

    location.latitude  = 37.250556;
    location.longitude = -96.358333;

    span.latitudeDelta = 0.05;
    span.longitudeDelta = 0.05;

    region.span = span;
    region.center = location;

    [mapView setRegion:region animated:YES];
    [mapView regionThatFits:region];
}

 - (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    [mapView setNeedsDisplay];    
}


@end

这不会定位纬度和经度的地方。请帮忙。

【问题讨论】:

  • 请在下次发布之前格式化您的代码(选择它并单击工具栏上的“010101”按钮。并且不要包含显然不必要的代码部分 - 其他人会更容易帮助您.
  • 下次一定会做...

标签: iphone maps mapkit mkmapview android-mapview


【解决方案1】:

我已经使用您的代码制作了一个示例项目,它工作正常 - 地图被定位到预期的(似乎)区域。检查您的 mapView ivar 是否已初始化(IB 中的连接设置是否正确?)

编辑:在您的代码中,您只需设置地图的可见区域,但不向其添加任何注释(除了自动显示当前用户位置,如果您在模拟器上测试,则始终在 Cupertino 中)。要将 pin 放到您的地图上,您需要创建一个确认 MKAnnotation 协议的对象并将其添加到 mapView:

// Sample example just to show annotation
// in your program you will likely need to use custom annotation objects 
CLLocation* myLocation = [[CLLocation alloc] initWithLatitude:37.250556 longitude:-96.358333];
[mapView addAnnotation:myLocation];

您的代码中的一些(不太相关)cmets:

  • 您无需使用当前位置初始化位置变量,因为之后会立即覆盖其坐标值
  • 为什么在viewDidUnload方法中调用[mapView setNeedsDisplay];?我不确定这是否会导致严重的问题,但您必须使用此方法清理内存(例如释放保留的 outlet),而不是重绘 UI

【讨论】:

  • 好吧,它确实显示了带有图钉的地图,该图钉位于加利福尼亚,库比蒂诺,这是默认位置,但我在上面代码中给出的坐标应该将其固定在堪萨斯州。我已经删除了初始化和setNeedDisplay,但它将地标固定在库比蒂诺而不是堪萨斯。
  • 有趣的是,我不确定为什么您的代码 sn-p 有效。 CLLocation 实际上并不符合 MKAnnotation(但当我运行该代码时它确实有效)。
  • @Nate,MKAnnotation 协议只有 1 个必需的方法 - 'coordinate' 和 CLLocation 有一个,因此运行时不会出现问题,尽管很可能编译器会在您添加 CLLocation 时发出警告作为mapview的注释。无论如何这只是一个例子,在现实生活中你应该使用符合 MKAnnotation 协议的自定义对象
  • 是的。编译器会警告它,但当然,我们都知道在 Objective-C 中,这并不意味着它不会工作:)。听起来 Apple 可能没有让 CLLocation 正式实现 MKAnnotation,因为他们不希望 CoreLocation 依赖于 MapKit ......但实际上,CLLocation 确实符合该协议,因为它目前的立场
【解决方案2】:

您是否已将地图设置为跟随其他地方的用户位置?也许该默认设置会否决您手动将地图移动到堪萨斯州。

编辑 Do'h,没有看到这是去年的七月。好吧,如果这不是问题,也许您可​​以与我们分享您的解决方案

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多