Tag: mapkit

定位MKMapView一次显示多个注释

我有几个注释,我想添加到我的MKMapView(它可以0-n项目,其中n通常是5左右)。 我可以添加注释很好,但我想要调整地图以适应屏幕上的所有注释,我不知道如何做到这一点。 我一直在看-regionThatFits:但我不太确定该怎么做。 我会张贴一些代码来显示我到目前为止。 我认为这应该是一个简单的任务,但是到目前为止,我对MapKit感到有点不知所措。 – (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ location = newLocation.coordinate; //One location is obtained.. just zoom to that location MKCoordinateRegion region; region.center = location; //Set Zoom level using Span MKCoordinateSpan span; span.latitudeDelta = 0.015; span.longitudeDelta = 0.015; region.span = span; // Set the region here… but I want this to […]

获取MKMapvIew的界限

为了设置一个查询到外部服务器,我想在我正在构build的iPhone应用程序中获取当前地图视图的边界。 UIView应该回应界限,但似乎MKMapView不。 设置一个区域并放大地图后,我尝试获取边界。 我被困在第一步,即尝试获取代表地图SE和NWangular的CGPoint。 之后,我要使用: – (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view 将点转换为地图坐标。 但是我连那个都没有 //Recenter and zoom map in on search location MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}}; region.center = mySearchLocation.searchLocation.coordinate; region.span.longitudeDelta = 0.01f; region.span.latitudeDelta = 0.01f; [self.mapView setRegion:region animated:YES]; //After the new search location has been added to the map, and the map zoomed, we need […]

在iPhone上的MapKit的两点之间寻找path/路线

我正试图在Mapkit上find两个位置之间的path。 我只有两个地点。 现在我必须find这些点之间的确切path,并使用MapKit在这些点之间画一条线。 我经历了几个使用.csv文件的例子。 在.csv文件中,他们已经存储了基于这些值的完整path和绘制线的经度和纬度值。 但是我在这里试图画出一条线,而不知道path。 那么有什么方法可以dynamic地findpath并画出一条线?

用button自定义MKAnnotation标注泡泡

我正在开发应用程序,其中用户通过GPS进行本地化,然后询问他是否位于特定位置。 为了证实这一点,标注泡沫马上提交给他,问他,如果他在特定的地方。 由于有很多类似的问题,我可以做自定义标注泡泡: 我的问题:button不是“可点击”我的猜测:因为这个自定义标注高于标准的标注泡泡,我不得不把它放在负面的“框架”,因此button不能被点击。 这是我的didSelectAnnotationView方法 – (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { if(![view.annotation isKindOfClass:[MKUserLocation class]]) { CalloutView *calloutView = (CalloutView *)[[[NSBundle mainBundle] loadNibNamed:@"callOutView" owner:self options:nil] objectAtIndex:0]; CGRect calloutViewFrame = calloutView.frame; calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width/2 + 15, -calloutViewFrame.size.height); calloutView.frame = calloutViewFrame; [calloutView.calloutLabel setText:[(MyLocation*)[view annotation] title]]; [calloutView.btnYes addTarget:self action:@selector(checkin) forControlEvents:UIControlEventTouchUpInside]; calloutView.userInteractionEnabled = YES; view.userInteractionEnabled = YES; [view addSubview:calloutView]; } […]

如何保持与MKAnnotation相关的数据在标注popup并且用户点击泄露button后丢失?

在用户点击引脚,看到标注并点击揭示button(打开详细视图控制器)之后,如何保存与MKAnnotation对象关联的数据? 我想在详细视图控制器中显示与引脚相关的所有数据。 我有一个简单的MKAnnotation类,如下所示: #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface VoiceMemoryAnnotation : NSObject <MKAnnotation> { NSString * blobkey; } @property (nonatomic, retain) NSString * blobkey; -(id)initWithBlobkey:(NSString *) key andCoordinate:(CLLocationCoordinate2D) c; @end 我实现了callback“viewForAnnotation” – (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { MKPinAnnotationView*singleAnnotationView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:nil]; // PM: this pin will have a callout (ie dont' forget to override […]

用于计算带有半阴茎function的轴承的CL位置类别

我试图写一个CLLocation的类别,以将方位返回到另一个CLLocation。 我相信我正在做一些错误的公式(结石不是我的强项)。 返回的轴承总是closures。 我一直在看这个问题,并尝试应用接受的更改作为正确的答案和它引用的网页: 计算两个CLLocationCoordinate2D之间的方位 http://www.movable-type.co.uk/scripts/latlong.html 感谢任何指针。 我已经尝试纳入来自其他问题的反馈,但我仍然没有得到什么。 谢谢 这是我的类别 – —– CLLocation + Bearing.h #import <Foundation/Foundation.h> #import <CoreLocation/CoreLocation.h> @interface CLLocation (Bearing) -(double) bearingToLocation:(CLLocation *) destinationLocation; -(NSString *) compassOrdinalToLocation:(CLLocation *) nwEndPoint; @end ——— CLLocation + Bearing.m #import "CLLocation+Bearing.h" double DegreesToRadians(double degrees) {return degrees * M_PI / 180;}; double RadiansToDegrees(double radians) {return radians * 180/M_PI;}; @implementation […]

MKAnnotationView – locking自定义注释视图以固定位置更新

更新#5我想这是赏金时间。 100多个意见,没有人采取刺,即使我已经张贴的代码示例。 一些声望点呢? 更新#4这是一个非常复杂的问题,所以我创build了一个新的基于标签的项目,其中包括我在这里遇到的麻烦的应用程序的部分。 你可以从http://www.servinitup.net/CustomCalloutAnnotation.zip下载它。随意打开它(需要添加你自己的包标识符在你的手机上运行它),并玩弄它,看看你是否可以得到那个恶意的标注注释与引脚移动! 更新#3尝试使setAnnotation的教程的CalloutMapAnnotationView的公共方法,并直接调用。 没有任何运气。 尽pipe发生了一些奇怪的事情,唯一感动的是标注的小三angular部分。 我无法让整个标注移动。 更新#2仍然没有太多的运气,但现在一直在寻找方式编程创build一个“捏缩放”,然后立即撤消,所以用户从来没有看到一个变化。 希望这样做以编程方式将有同样的效果做手动,标注注释将弹回到它的父。 有任何想法吗? 更新#1在这里玩了以后,我得到了: – 取代self.calloutAnnotation.coordinate = coords; with self.calloutAnnotation.latitude = coords.latitude;self.calloutAnnotation.longitude = coords.longitude; – 改变了这一点,如果我稍微捏住地图以在引脚更新后放大或缩小,则标注注释会在引脚正上方移动到正确的位置。 所以现在我需要弄清楚如何在没有用户实际缩放的情况下发生这种情况。 原始post 我和其他SO用户一起,正在使用这个出色的解决scheme来创build一个自定义标注注释: http : //blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1/ 当您使用标准标注(annotationview.canShowCallout = true)并且标签在位置更新时围绕屏幕移动时,标准标注将与标签一起跟踪,就好像它们被locking在一起。 当使用上面的自定义标注解决scheme时,当位置更新后我的引脚移动时,标注注释将保留在原始位置。 当然,我想模仿iOS标准,并且将自定义标注注释与引脚一起跟踪。 这里是我到目前为止的代码,这是成功地移动注释视图,但不是自定义标注注释视图: / *核心位置广播通知,我的视图控制器侦听该通知,并调用locationManagerDidFindLocation * / – (void)locationManagerDidFindLocation:(NSNotification *)notif { CLLocation * location = [notif.userInfo objectForKey:@“location”]; CLLocationCoordinate2D coords = [位置坐标]; […]

我怎样才能使用MKAnnotationView创build一个自定义的“pin-drop”animation?

我有一个MKMapView的实例,并希望使用自定义注释图标,而不是由MKPinAnnotationView提供的标准图钉图标。 所以,我设置了一个名为CustomMapAnnotation的MKAnnotationView的子类,并覆盖-(void)drawRect:绘制一个CGImage。 这工作。 当我尝试复制由.animatesDrop提供的.animatesDropfunction时遇到麻烦; 我喜欢我的图标逐渐出现,从上面,从左到右的顺序,当注释被添加到MKMapView实例。 这里是 – (void)drawRect:用于CustomMapAnnotation,它在你绘制UIImage(这是第二行所做的)时工作: – (void)drawRect:(CGRect)rect { [super drawRect:rect]; [((Incident *)self.annotation).smallIcon drawInRect:rect]; if (newAnnotation) { [self animateDrop]; newAnnotation = NO; } } 添加animateDrop方法时会遇到麻烦: -(void)animateDrop { CGContextRef myContext = UIGraphicsGetCurrentContext(); CGPoint finalPos = self.center; CGPoint startPos = CGPointMake(self.center.x, self.center.y-480.0); self.layer.position = startPos; CABasicAnimation *theAnimation; theAnimation=[CABasicAnimation animationWithKeyPath:@"position"]; theAnimation.fromValue=[NSValue valueWithCGPoint:startPos]; theAnimation.toValue=[NSValue valueWithCGPoint:finalPos]; theAnimation.removedOnCompletion = […]

MKMapView缩放和区域

我熟悉使用Google Maps Javascript API。 最近我开始为一个iphone项目使用MapKit框架,但我很难弄清楚缩放和设置地图上的区域。 在Google Maps API中,我使用了8,9,10等整数缩放级别以及简单的函数setZoom()。 我在MapKit框架中唯一可以看到的方法是setRegion:animated。 据我所知,我需要设置一个区域的跨度的纬度和经度的“三angular洲”值来指定缩放级别。 但我真的不知道这些值代表什么(我阅读文档)。 当我使用MKMapView委托并跟踪regionDidChange委托方法结果中的跨度值似乎不相互关联。 当我缩小时,可以看到量程增量值按照文档中的规定增加。 但突然间,我拖动地图而不缩放,增量值变为0.0。 有人可以请解释什么是这些跨度和三angular洲的参考点? 还是有任何algorithm来将整数缩放级别(如9)转换为这些增量值? 作为一个奖金的问题是否有任何方式来指定MKMapView的最小最大缩放级别:) 谢谢

检测到一个MKPolygon的一个点打破了iOS7(CGPathContainsPoint)

在今年早些时候我问到的一个SO问题中 ,我得到了这样一段代码: MKPolygonView *polygonView = (MKPolygonView *)[self.mapView viewForOverlay:polygon]; MKMapPoint mapPoint = MKMapPointForCoordinate(tapCoord); CGPoint polygonViewPoint = [polygonView pointForMapPoint:mapPoint]; if (CGPathContainsPoint(polygonView.path, NULL, polygonViewPoint, FALSE)) { // do stuff } 这直到iOS7才有效。 它现在总是返回false,并且不会检测到具有path的点。 我试图find任何文件说明方法改变,但找不到任何。 任何想法,为什么它坏了? 还是新的解决scheme?