我正在尝试为 iPhone 学习 MAP。
我现在拥有的是下面。
- 创建了新项目
- 为 MAP 添加了框架
- 将地图对象带到故事板上(UIViewController)
- 运行项目。
我看到的是,它没有显示任何位置。当我在 xcode 中更改位置时,它会显示位置处的点。
我想要的是,默认情况下,它应该向我显示我将使用纬度和经度设置的位置的 PIN。地图也应该缩放。我所说的缩放的意思是,我应该看到具有 13 缩放效果的位置。现在,我在屏幕上看到世界地图。
知道如何完成这项工作吗?
我正在尝试为 iPhone 学习 MAP。
我现在拥有的是下面。
我看到的是,它没有显示任何位置。当我在 xcode 中更改位置时,它会显示位置处的点。
我想要的是,默认情况下,它应该向我显示我将使用纬度和经度设置的位置的 PIN。地图也应该缩放。我所说的缩放的意思是,我应该看到具有 13 缩放效果的位置。现在,我在屏幕上看到世界地图。
知道如何完成这项工作吗?
您可以通过执行以下操作将地图围绕某个位置居中:
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
点显示您当前的位置。
如果要添加带有坐标的引脚,则应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 MKUserLocation
in的对象mapView.annotations
,然后调用[mapView removeAnnotation:userLocationDot]
.
要使用 Map 创建应用程序,您需要实现MKAnnotation
,MKMapViewDelegate
委托。
这对你来说是一个很好的教程。