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 创建应用程序,您需要实现 MKAnnotationMKMapViewDelegate 德尔盖茨。

这是一个很好的tutorial。

【讨论】:

以上是关于IOS如何在地图中设置位置的主要内容,如果未能解决你的问题,请参考以下文章

如何使地图引脚动画下降?斯威夫特 2.2 IOS 9

如何在 swift/iOS 中更新谷歌地图标记位置

室内地图 - 如何使用室内地图跟踪用户位置和方向 - Android 和 IOS [关闭]

如何在 iOS 应用程序中强制“始终”访问位置

iOS:Swift - 如何在触摸地图上添加精确定位并获取该位置的详细地址?

如何使用地图:在phonegap ios应用程序中