Tag: mapkit

如何从上传的iPhone照片获取正确的经纬度?

我的问题其实似乎很傻…我正在写一个使用MKMapKit的iPhone应用程序。 该应用程序抓取提供的地理标记照片的EXIF元数据。 问题是我检索的纬度和经度坐标,例如: 纬度:34.25733333333334 Lon:118.5373333333333 在中国返回一个位置。 是否有一个区域设置,我缺less或使用它们之前,我需要转换经纬度坐标? 预先感谢您提供的任何帮助。 这是我用来获取GPS数据的代码。 你会注意到我将所有东西都logging在控制台上,所以我可以看到这些值是什么: void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *) = ^(ALAsset *asset) { NSDictionary *metadata = asset.defaultRepresentation.metadata; NSLog(@"Image Meta Data: %@",metadata); NSDictionary *gpsdata = [metadata objectForKey:@"{GPS}"]; self.lat = [gpsdata valueForKey:@"Latitude"]; self.lng = [gpsdata valueForKey:@"Longitude"]; NSLog(@"\nLatitude: %@\nLongitude: %@",self.lat,self.lng); }; NSURL *assetURL = [mediaInfo objectForKey:UIImagePickerControllerReferenceURL]; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library assetForURL:assetURL […]

用不同的针脚颜色映射视图注释

我有一个超过200个对象的数组,我试图执行每个循环。 每个对象将有一个是/否的字段,我想显示一个不同的颜色标记依赖是/否的值。 从我所看到的是我的循环正在经历每个对象,然后在每个对象的末尾添加所有的注释。 由于我在循环中通过数组中的yes no值执行了一个检查,当所有的注释被添加到我的地图中时,它将使用来自数组中最后一个对象的yes / no值。 我怎么能这样做,这样标记将是不同的取决于每个元素的是/否值? 我的代码是 for (i = 0; i < [appDelegate.itemArray count]; i++) { item_details *tempObj = [appDelegate.itemArray objectAtIndex:i]; location.latitude = [tempObj.lat floatValue]; location.longitude = [tempObj.lon floatValue]; current_yesno = tempObj.yesno; MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc]initWithTitle:tempObj.name andCoordinate:location]; [self.mapView addAnnotation:newAnnotation]; [newAnnotation release]; } 我的注释代码如下 – (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{ […]

将MKMapView集中在引脚下方的N像素点上

希望将MKMapView居中放置在给定引脚下的N像素点( 在当前MapRect中可能不可见 )。 我一直试图解决这个使用各种戏剧-(CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view没有成功。 任何人都在这条路上( 没有双关语 )?

iOS的 – 如何限制MapView的特定区域?

我有以下问题: 我有一个“绘制地图”(图片),我把它添加到MapView作为一个覆盖。 没有问题,但..我需要限制的地图视图的覆盖区域,所以用户无法滚动/缩放区域以外的地方..但它应该是可以滚动/放大“边界“覆盖 – 意味着我不能禁用缩放/滚动的MapView。 有没有关于这个主题的想法/解决scheme? 使用MapView / -Kit的原因是我需要添加各种兴趣点到自定义地图。 当使用ImageView + ScrollView呈现自定义地图时,这可能会变得更加复杂。 我已经研究了这个话题,但是我没有find一个好的解决scheme。 任何帮助表示赞赏! 最好的问候,基督徒 编辑:这是我们的解决scheme: 您提供一个顶部和一个底部的坐标来限制地图。 (最小)缩放级别也是有限的。 我已经停用减速,你可以反弹一下地图(为了更好的性能/ ux)。 我在叠加层上添加了一个〜1km的灰色边框,这样用户就无法看到google的orignal世界地图了。 LimitedMapView.h: #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface LimitedMapView : MKMapView <UIScrollViewDelegate>{ } @property (nonatomic, assign) CLLocationCoordinate2D topLeftCoordinate; @property (nonatomic, assign) CLLocationCoordinate2D bottomRightCoordinate; @end LimitedMapView.m: #import "LimitedMapView.h" @implementation LimitedMapView @synthesize topLeftCoordinate, bottomRightCoordinate; – (void)scrollViewDidZoom:(UIScrollView *)scrollView{ if([super […]

与MapKit ios的渐变折线

我试图使用覆盖(MKOverlay)跟踪MKMapView上的路线。 但是,根据目前的速度,如果颜色正在改变(例如,如果用户从65英里/小时到30英里/小时的速度从绿色变为橙色),则我想在跟踪路线时使用具有渐变的耐克应用程序。 以下是我想要的截图: 所以,每隔20米,我就使用以下方法从旧坐标到新坐标添加覆盖图: // Create ac array of points. MKMapPoint *pointsArray = malloc(sizeof(CLLocationCoordinate2D) * 2); // Create 2 points. MKMapPoint startPoint = MKMapPointForCoordinate(CLLocationCoordinate2DMake(oldLatitude, oldLongitude)); MKMapPoint endPoint = MKMapPointForCoordinate(CLLocationCoordinate2DMake(newLatitude, newLongitude)); // Fill the array. pointsArray[0] = startPoint; pointsArray[1] = endPoint; // Erase polyline and polyline view if not nil. if (self.routeLine != nil) self.routeLine = […]

在iPhone上的MapKit上find两个点之间的path/路线

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

自定义MKAnnotation标注视图?

我有一个MKPointAnnotation : let ann = MKPointAnnotation() self.ann.coordinate = annLoc self.ann.title = "Customize me" self.ann.subtitle = "???" self.mapView.addAnnotation(ann) 它看起来像这样: 我如何定制这个标注视图来创build我自己的视图,而不是预定义视图?

用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]; } […]

如何识别哪个引脚被窃听

我在这张地图上有一个MKMapView和大量的针脚的应用程序。 每个引脚都得到了rightCalloutAccessoryView 。 我以这种方式创build它: UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside]; pinView.rightCalloutAccessoryView = rightButton; 我应该怎么知道,哪个针被窃听? 日Thnx

检测到一个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?