我正在尝试为iPhone学习MAP。
我现在所拥有的是下面的内容。
我看到的是,它没有显示任何位置。当我在xcode中更改位置时,它会向我显示位置处的点。
我想要的是,默认情况下它应该显示我将使用纬度和经度设置的位置的PIN。地图也应该缩放。我的缩放是什么意思,我应该看到位置,让我们说13缩放效果。现在,我在屏幕上看到世界地图。
知道如何完成这项工作吗?
答案 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创建应用程序,您需要实现MKAnnotation
,MKMapViewDelegate
代理。
对你来说这是一个很好的tutorial。