Tag: mapkit

如何在swift中使用MapKit自定义userLocationAnnotationView图像?

我试图find一种方法来显示使用MapKit的用户在地图上的方向。 本地MapKit的方式,总是旋转整个地图。 由于用户的位置也是一个MKAnnotationView,我决定创build一个特定的类来覆盖它,并使用特定的图像(带箭头)。 class UserLocationAnnotationView: MKAnnotationView { override init(frame: CGRect) { super.init(frame: frame) } override init(annotation: MKAnnotation!, reuseIdentifier: String!) { super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) var frame = self.frame frame.size = CGSizeMake(130, 130) self.frame = frame self.backgroundColor = UIColor.clearColor() self.centerOffset = CGPointMake(-30, -50) } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! } /* // Only override […]

通过networking服务创build多个折线的MKOverlay

我的应用程序是实时跟踪器,多用户login和更新他们的位置,通过发送他们的坐标到我们的Web服务,然后callback,让我们每2分钟后显示所有用户在我的MapView 。 每次我从web服务中获取用户在connectionDidFinishLoading方法中的位置时,我正在parsing,通过pointsArray创build多段polyline并将它们添加到overlay : -(void) connectionDidFinishLoading: (NSURLConnection *) connection { userLatitudeArray = [[NSMutableArray alloc]init]; userLongitudeArray = [[NSMutableArray alloc]init]; userIdArray = [[NSMutableArray alloc]init]; userNameArray = [[NSMutableArray alloc]init]; userProfilePicArray = [[NSMutableArray alloc]init]; profilePicURLStringArray = [[NSMutableArray alloc]init]; [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; NSArray *trackingDict = [NSJSONSerialization JSONObjectWithData:empJsonData options:kNilOptions error:nil]; if ([trackingDict count] >= 2) { for (trackUsersCount = 0; […]

MKPolyLineRenderer改变颜色而不移除重叠

我正在开发一个应用程序,几乎复制苹果地图应用程序的行为。 当我触摸路线时,我需要将其颜色更改为蓝色,并将其他颜色更改为灰色。 有没有一种有效的方法来实现这一点,而不必删除叠加并重新添加它们? 谢谢。

可达性和国际漫游

我使用Apple的Reachability类来确定数据或wifi是否可用。 但是,用户(使用美国iPhone)正在testing另一个国家/地区的应用程序,并在尝试访问MapKit时看到以下错误。 安慰 在我对这个错误的研究中,我发现PBRequester是ProtocolBuffer 。 2012-10-15 21:16:00.921 WrightsCS应用程序[24239:907] PBRequester失败,错误错误域= kCFErrorDomainCFNetwork代码= -1018“国际漫游目前closures。 UserInfo = 0x1e5587d0 {NSErrorFailingURLKey = https://gsp13-cn.ls.apple.com/shift,NSErrorFailingURLStringKey = https://gsp13-cn.ls.apple.com/shift,NSLocalizedDescription =国际漫游目前closures。} 例 -(BOOL)hasDataConnection { Reachability *networkReachability = [Reachability reachabilityForInternetConnection]; NetworkStatus networkStatus = [networkReachability currentReachabilityStatus]; if ( networkStatus == NotReachable ) { return NO; } else { if ( ! [Reachability reachabilityWithHostName:@"www.google.com"] ) return NO; return YES; […]

在Xcode中的两个坐标之间绘制折线

我想在地图上的两个或多个给定的坐标之间绘制多边形线(多边线而不是路线)。 想象一下,我在地图上有2个丢弃的引脚,我需要从第一个丢弃的引脚到第二个丢弃的引脚绘制一条直线。

为什么calloutAccessoryControlTapped也被称为在注解视图上点击?

我在我的视图控制器上有一个地图,我不知道为什么,但我只是点击注释视图时,不仅仅是当我点击细节闭包时调用委托calloutAccessoryControlTapped 也被称为 。 那为什么这个行为? import UIKit import MapKit extension MapVC: MKMapViewDelegate, CLLocationManagerDelegate { func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) { … } }

如何在加载地图时直接显示多个注释的标题

我将多个注释加载到我的地图视图中。 这些注释在加载地图时显示为一个pin。 通过使用下面的代码,我可以直接显示一个标注的标题,但是对于其余的标注,用户需要点击标题以查看标题。 我想在Mapview Loaded时显示所有注解的标题而不触及注释引脚 NSMutableArray * locations = [[NSMutableArray alloc] init]; _myAnn = [[MKPointAnnotation alloc] init]; _locationCoordinate.latitude = 27.175015; _locationCoordinate.longitude = 78.042155; _myAnn.coordinate = _locationCoordinate; _myAnn.title = @"A"; [locations addObject:_myAnn]; _myAnn = [[MKPointAnnotation alloc] init]; _locationCoordinate.latitude = 28.171391; _locationCoordinate.longitude = 79.037090; _myAnn.coordinate = _locationCoordinate; _myAnn.title = @"B"; [locations addObject:_myAnn]; _myAnn = [[MKPointAnnotation alloc] init]; […]

自定义MKMapView标注不响应触摸事件

我有一个自定义的UIView ,当用户点击一个MKMapView上的自定义注释时,将显示为一个标注。 为了实现这个我已经subclassed MKAnnotationView并重载-setSelected:selected animated:方法build议在这个答案 。 基本上,我添加我的自定义视图作为我的MKAnnotationView子类的子视图。 问题是我无法与包含button和可滚动webview的标注进行交互。 更重要的是,如果标注隐藏了注释,而且我在该隐藏注释的大概位置按下标注,则标注将被解除,并显示新标注。 // TPMapAnnotationView.m @implementation TPMapAnnotationView – (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; if(selected) { TPMapAnnotation* anno = ((TPMapAnnotation*)self.annotation); QuickInfoView* qi = [[QuickTabView alloc] initWithFrame:CGRectMake(0, 0, 440, 300)]; [qi displayDataForAnnotation:anno]; [self addSubview:qi]; // some animiation code that doesn't change things either way } else { [[self.subviews objectAtIndex:0] removeFromSuperview]; […]

MKPolygon – 如何确定CLLocationCoordinate2D是否在CLLocationCoordinate2D多边形?

我有下面的swift代码绘制一个多边形,并在MKMapView上放下注释。 我想弄清楚如何我可以确定注释的坐标是否在多边形内? import UIKit import MapKit class ViewController: UIViewController { @IBOutlet weak var mapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() let initialLocation = CLLocation(latitude: 49.140838, longitude: -123.127886) centerMapOnLocation(initialLocation) addBoundry() var annotation = MKPointAnnotation() annotation.coordinate = point1 annotation.title = "Roatan" annotation.subtitle = "Honduras" mapView.addAnnotation(annotation) } var points = [CLLocationCoordinate2DMake(49.142677, -123.135139), CLLocationCoordinate2DMake(49.142730, -123.125794), CLLocationCoordinate2DMake(49.140874, -123.125805), CLLocationCoordinate2DMake(49.140885, -123.135214)] […]

MapKit取消selectAnnotation和Popover不会animation

我有一些自定义注释,当在标注附件控件上按下时,popup窗口显示更多信息(如从苹果的地图应用程序中)。 除了不animation,即使animation设置为YES,每件事情都是有效的。 码: – (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { [mapView deselectAnnotation:view.annotation animated:YES]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; _basePopupViewController = [storyboard instantiateViewControllerWithIdentifier:@"BasePopupViewController"]; _popover = [[UIPopoverController alloc] initWithContentViewController:_basePopupViewController]; [_popover presentPopoverFromRect:view.bounds inView:view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; }