IOS如何在地图中设置位置
Posted
技术标签:
【中文标题】IOS如何在地图中设置位置【英文标题】:How to set location in map in IOS 【发布时间】:2012-11-14 12:40:01 【问题描述】:我正在尝试学习 MAP for iPhone。
我现在拥有的是下面。
-
创建新项目
为 MAP 添加了框架
在情节提要 (UIViewController) 上带来地图对象
运行项目。
我看到的是,它没有显示任何位置。当我在 xcode 中更改位置时,它会显示位置处的点。
我想要的是,默认情况下,它应该向我显示我将使用纬度和经度设置的位置的 PIN。地图也应该缩放。我所说的缩放的意思是,我应该看到具有 13 倍缩放效果的位置。现在,我在屏幕上看到了世界地图。
知道如何完成这项工作吗?
【问题讨论】:
检查您是否在 Interface Builder 中为 iPhone 4.0 英寸(iPhone 5)创建了 viewController,并且您在 iPhone 3.5 英寸屏幕(视网膜或非视网膜)内运行应用程序 【参考方案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
【讨论】:
【参考方案2】: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。有一个方便的类别用于这些目的。
如果你想删除当前位置点,你应该在mapView.annotations
中找到一个类为MKUserLocation
的对象,然后调用[mapView removeAnnotation:userLocationDot]
。
【讨论】:
【参考方案3】:要使用 Map 创建应用程序,您需要实现 MKAnnotation
、MKMapViewDelegate
德尔盖茨。
这是一个很好的tutorial。
【讨论】:
以上是关于IOS如何在地图中设置位置的主要内容,如果未能解决你的问题,请参考以下文章
室内地图 - 如何使用室内地图跟踪用户位置和方向 - Android 和 IOS [关闭]