标签: mkmapview

缩放MKMapView以适合注释引脚?

我正在使用MKMapView并在地图上添加了许多注释引脚,大约5-10公里的区域.当我运行应用程序时,我的地图开始缩小以显示整个世界,缩放地图以使引脚适​​合视图的最佳方法是什么?

编辑: 我最初的想法是使用MKCoordinateRegionMake并从我的注释中计算坐标中心,longitudeDelta和latitudeDelta.我很确定这会起作用,但我只是想检查一下我没有遗漏任何明显的东西.

代码添加,BTW:FGLocation是一个符合的类MKAnnotation,locationFake是NSMutableArray这些对象中的一个.欢迎评论....

- (MKCoordinateRegion)regionFromLocations {
    CLLocationCoordinate2D upper = [[locationFake objectAtIndex:0] coordinate];
    CLLocationCoordinate2D lower = [[locationFake objectAtIndex:0] coordinate];

    // FIND LIMITS
    for(FGLocation *eachLocation in locationFake) {
        if([eachLocation coordinate].latitude > upper.latitude) upper.latitude = [eachLocation coordinate].latitude;
        if([eachLocation coordinate].latitude < lower.latitude) lower.latitude = [eachLocation coordinate].latitude;
        if([eachLocation coordinate].longitude > upper.longitude) upper.longitude = [eachLocation coordinate].longitude;
        if([eachLocation coordinate].longitude < lower.longitude) lower.longitude = [eachLocation coordinate].longitude;
    }

    // FIND REGION
    MKCoordinateSpan locationSpan;
    locationSpan.latitudeDelta = upper.latitude - lower.latitude;
    locationSpan.longitudeDelta = upper.longitude - lower.longitude;
    CLLocationCoordinate2D …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c mkmapview ios

190
推荐指数
14
解决办法
10万
查看次数

无法实例化名为MKMapView的类

我可能在这里做了一些非常愚蠢的事情,因为我之前已经完成了它并且现在......

创建了一个新的iPad项目,在详细信息视图中我添加了一个MKMapView,将MapKit.framework添加到项目中,将属性/等添加到标题中.去运行项目并获得SIGABRT

****由于未捕获的异常'NSInvalidUnarchiveOperationException'而终止应用程序,原因:'无法实例化名为MKMapView的类'**

我找到了http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/,但就像我说的那样,我已经添加了框架.我错过了什么?

mkmapview ipad ios

162
推荐指数
5
解决办法
6万
查看次数

如何删除MKMapView上的所有注释

Is there a simple way to delete all the annotations on a map without iterating through all the displayed annotations in Objective-c?

annotations objective-c iphone-sdk-3.0 mkmapview

98
推荐指数
8
解决办法
6万
查看次数

如何拦截触摸MKMapView或UIWebView对象上的事件?

我不确定我做错了什么,但我试图抓住一个MKMapView物体.我通过创建以下类来继承它:

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface MapViewWithTouches : MKMapView {

}

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event;   

@end
Run Code Online (Sandbox Code Playgroud)

并实施:

#import "MapViewWithTouches.h"
@implementation MapViewWithTouches

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event {

    NSLog(@"hello");
    //[super touchesBegan:touches   withEvent:event];

}
@end
Run Code Online (Sandbox Code Playgroud)

但看起来当我使用这个类时,我在控制台上看不到任何内容:

MapViewWithTouches *mapView = [[MapViewWithTouches alloc] initWithFrame:self.view.frame];
[self.view insertSubview:mapView atIndex:0];
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

cocoa-touch objective-c iphone-sdk-3.0 mkmapview ios

96
推荐指数
5
解决办法
8万
查看次数

当地图视图只是屏幕的一部分时,如何在iOS模拟器中捏合?

我在iPad上有一个视图,我正在添加一个MKMapView,就是全屏高度的一半.但是,当我试图在iOS模拟器上捏时它不起作用,因为在模拟器上填充整个iPad视图的小块.

所以,随着地图视图的一半,我按下键盘上的"选项"键,我无法抓住地图捏出来.

任何人都知道如何处理这个?

simulator mkmapview ios

95
推荐指数
7
解决办法
5万
查看次数

如何自定义MKAnnotationView的标注气泡?

我目前正在使用mapkit并且卡住了.

我有一个我正在使用的自定义注释视图,我想使用image属性在我自己的图标上显示地图上的点.我有这个工作正常.但我还想做的是覆盖默认的标注视图(触摸注释图标时显示标题/副标题的气泡).我希望能够控制标注本身:mapkit只提供对左右辅助标注视图的访问,但是没有办法为标注泡泡提供自定义视图,或者给它零大小或其他任何东西.

我的想法是覆盖我的selectAnnotation/deselectAnnotation MKMapViewDelegate,然后通过调用我的自定义注释视图来绘制我自己的自定义视图.这有效,但只有在我的自定义注释视图类中canShowCallout设置时才有效YES.如果我将此设置为NO(这是我想要的,那么不会调用这些方法,因此不会绘制默认的标注气泡).所以我无法知道用户是否在地图上触摸了我的点(选中它)或触摸了一个不属于我的注释视图(被选中)的点而没有显示默认的标注气泡视图.

我试着走另一条路,只是自己在地图上处理所有触摸事件,我似乎无法让这个工作.我在地图视图中阅读了与捕捉触摸事件相关的其他帖子,但它们并不完全是我想要的.有没有办法挖掘地图视图以在绘制之前删除标注气泡?我不知所措.

有什么建议?我错过了一些明显的东西吗

objective-c mapkit mkmapview mkannotationview ios

89
推荐指数
6
解决办法
6万
查看次数

确定是否拖动/移动了MKMapView

有没有办法确定是否拖动了MKMapView?

我想在每次用户拖动地图时获取中心位置,CLLocationCoordinate2D centre = [locationMap centerCoordinate];但是我需要一个委托方法或者一旦用户使用地图导航就会触发.

提前致谢

mkmapview ios

78
推荐指数
11
解决办法
5万
查看次数

如何在没有CLLocationManager的情况下将MKMapView缩放到用户当前位置?

随着MKMapView有一个名为"显示用户的当前位置",它会自动显示在一个用户位置的选项map.

当它被找到时(如果它发生变化)我想移动并缩放到这个位置.

问题是,当用户位置更新时,似乎没有任何方法被调用map,所以我无处可放置代码zoom/scroll.

有没有办法在MKMapView获得(或更新)用户位置时收到通知,以便我可以移动/缩放它?如果我使用自己CLLocationManager的更新,我得到的更新与地图上用户标记的更新不一致,所以当我的地图移动并在蓝色针脚出现之前缩放几秒时,它看起来很傻.

这感觉就像基本的功能,但我花了几周的时间寻找解决方案而不是近距离接触.

iphone mkmapview

70
推荐指数
5
解决办法
5万
查看次数

MKMapView:自定义视图而不是注释引脚

我想在我的MKMapView而不是小石头上显示图像.有人可以在这里放一些有用的代码,或告诉如何做到这一点?

谢谢!

编辑

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = nil; 
if(annotation != mapView.userLocation) 
{
    static NSString *defaultPinID = @"com.invasivecode.pin";
    pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
    if ( pinView == nil ) pinView = [[MKPinAnnotationView alloc]
                                      initWithAnnotation:annotation reuseIdentifier:defaultPinID];

    pinView.pinColor = MKPinAnnotationColorGreen; 
    pinView.canShowCallout = YES;
    pinView.animatesDrop = YES;
    pinView.image = [UIImage imageNamed:@"pinks.jpg"];    //as suggested by Squatch
} 
else {
    [mapView.userLocation setTitle:@"I am here"];
}
return pinView;
}
Run Code Online (Sandbox Code Playgroud)

我期待我的图像pinks.jpg在地图上,固定位置而不是默认的针视图(摇针形状).但我仍然得到了引脚的默认图像.

objective-c mkmapview mkannotation ios swift

61
推荐指数
2
解决办法
7万
查看次数

快速将单引脚添加到MKMapView?

我有一个GPS坐标(纬度,经度),我很快就想在显示该位置的MKMapView上放置一个引脚.一切都运行得很好,但因为我只需要一个没有标注的单个引脚是否有更快的方法来做到这一点,或者我在下面需要做什么?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation {
    MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"DETAILPIN_ID"];
    [pinView setAnimatesDrop:YES];
    [pinView setCanShowCallout:NO];
    return pinView;
}
Run Code Online (Sandbox Code Playgroud)

注意:我不需要检查可重复使用的注释视图,因为我只使用引脚在详细视图中显示位置(在下次请求详细视图时销毁并重新创建).

iphone cocoa-touch objective-c mkmapview

61
推荐指数
6
解决办法
5万
查看次数