如何在IOS中设置地图中的位置

时间:2012-11-14 12:40:02

标签: ios objective-c ios5 mapkit

我正在尝试为iPhone学习MAP。

我现在所拥有的是下面的内容。

  1. 创建新项目
  2. 添加了MAP的框架
  3. 在故事板上引入地图对象(UIViewController)
  4. 运行项目。
  5. 我看到的是,它没有显示任何位置。当我在xcode中更改位置时,它会向我显示位置处的点。

    我想要的是,默认情况下它应该显示我将使用纬度和经度设置的位置的PIN。地图也应该缩放。我的缩放是什么意思,我应该看到位置,让我们说13缩放效果。现在,我在屏幕上看到世界地图。

    知道如何完成这项工作吗?

3 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作将地图置于某个位置的中心位置:

    MKCoordinateRegion mapRegion;
    mapRegion.center.latitude = aLatitude;
    mapRegion.center.longitude = aLongitude;
    mapRegion.span.latitudeDelta = 0.005;
    mapRegion.span.longitudeDelta = 0.005;
    self.mapView.region = mapRegion;

使用范围值确定所需的缩放级别。

要显示图钉,您需要使用您所在位置的坐标创建注释,然后将其添加到地图中。

另外,请查看本教程.. http://www.raywenderlich.com/2847/introduction-to-mapkit-on-ios-tutorial

答案 1 :(得分:1)

Dot显示您当前的位置。

如果要添加带坐标的图钉,则应使用符合addAnnotation协议的对象调用MKAnnotation方法。这样的对象有一个属性coordinate(你应该把它添加到你的类中):

@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

此外,您应该将MKMapViewDelegate协议添加到控制器并实施-mapView:viewForAnnotation:方法。它的作用是-tableView:viewForRowAtIndexPath:

- (MKAnnotationView *)mapView:(MKMapView *)_mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        return nil;
    }

    static NSString *annotationIdentifier = @"annotation";
    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];   // Reusing

    if (!annotationView) {
        MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
        pinView.animatesDrop = YES;

        annotationView = pinView;
    }
    else {
        annotationView.annotation = annotation; // Reusing already created pin as UITableViewCell does
    }

    return annotationView;
}

然后当你打电话

MKMapView *mapView = ...;
id<MKAnnotation> obj = ...;
[mapView addAnnotation:obj];

该图钉将被放置在地图上。

缩放外观there。有一个方便的类别用于这些目的。

如果要删除当前位置点,您应在MKUserLocation中找到包含mapView.annotations类的对象,然后调用[mapView removeAnnotation:userLocationDot]

答案 2 :(得分:0)

要使用Map创建应用程序,您需要实现MKAnnotationMKMapViewDelegate代理。

对你来说这是一个很好的tutorial