0

我正在尝试为 iPhone 学习 MAP。

我现在拥有的是下面。

  1. 创建了新项目
  2. 为 MAP 添加了框架
  3. 将地图对象带到故事板上(UIViewController)
  4. 运行项目。

我看到的是,它没有显示任何位置。当我在 xcode 中更改位置时,它会显示位置处的点。

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

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

4

3 回答 3

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

于 2012-11-14T12:51:07.987 回答
1

点显示您当前的位置。

如果要添加带有坐标的引脚,则应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];

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

放大看那里。有一个方便的类别用于这些目的。

如果你想删除当前位置点,你应该找到一个带有 class MKUserLocationin的对象mapView.annotations,然后调用[mapView removeAnnotation:userLocationDot].

于 2012-11-14T12:54:54.840 回答
0

要使用 Map 创建应用程序,您需要实现MKAnnotation,MKMapViewDelegate委托。

这对你来说是一个很好的教程

于 2012-11-14T12:52:13.760 回答