Tag: mapkit

根据服务器数据(纬度和经度)在MKMapView中移动注释

在我的应用程序中,我通过以特定间隔从服务器获取其位置(经度和纬度)来显示其他人的位置。 获得后,我必须删除所有注释,并根据服务器数据删除新的注释。 但它看起来效率非常低,因为当我们有相同的用户先前存在的注释,即使我删除和添加相同的用户注释。 所以我想知道我们是否可以将MKAnnotation从一个坐标移到另一个坐标? 我已经尝试过“设置协调”财产,但无法成功实施。 也不是“触摸和拖动”的一种。 当应用程序从服务器获取数据(纬度和经度)时,注释会自动移动。

如何添加两个或更多的buttonannotationView:MKAnnotationView?

我想有一个MKAnnotationView到我的地图上的引脚(使用MapKit)与下一个属性: 1)图像 2)详细button 3)另一个细节button 4)另一个细节button? 我已经做了实际添加图像和细节button与下一个代码: annotationView.detailCalloutAccessoryView = snapshotView // snapshot view is a custom view // with image and its constraints let detailsButton = UIButton(type: .detailDisclosure) annotationView.rightCalloutAccessoryView = detailsButton 所以,问题是如何添加多个button到MKAnnotationView ? 因为我见过的所有教程只是“如何添加细节button”。

使用Swift以编程方式在Mapkit中倾斜地图

我想在启动时倾斜地图。 (与用2个手指向上或向下滚动的用户相同) 这可能使用Swift吗?

将MKAnnotation坐标转换为视图坐标

我显示一个自定义的UIView当用户点击的引脚(如Zillow应用程序)。 现在的问题是,我需要将视图放在实际引脚上方。 MKAnnotationView坐标系与地图有关。 我怎样才能得到相对于iPhone屏幕的坐标,然后把我的视图放在那个坐标上。 – (void)mapView:(MKMapView *)mv didSelectAnnotationView:(MKAnnotationView *)view { // get view from storyboard ZillowSearchResultAnnotation *annotation = (ZillowSearchResultAnnotation *) view.annotation; PropertyAbstractViewController *propertyAbstractViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PropertyAbstractIdentifier"]; propertyAbstractViewController.view.frame = CGRectMake(0, 0, 100, 100); [propertyAbstractViewController bind:annotation.data]; [mv addSubview:propertyAbstractViewController.view]; }

MKMapView – 限制地图滚动到方形覆盖

我有一个MKMapView与方形覆盖描述为: CLLocationCoordinate2D coordsBg[5]={ CLLocationCoordinate2DMake(31.750865,35.180882), CLLocationCoordinate2DMake(31.740331,35.180882), CLLocationCoordinate2DMake(31.740331,35.165452), CLLocationCoordinate2DMake(31.750865,35.165452), CLLocationCoordinate2DMake(31.750865,35.180882) }; MKPolygon *bg=[MKPolygon polygonWithCoordinates:coordsBg count:5]; [map addOverlay:bg]; 我希望限制用户在覆盖之外滚动。 我可以限制MKMapView的滚动视图吗? 或者还有其他方法? 谢谢 沙尼

让用户在IOS 6中select谷歌地图和苹果地图?

我在iOS应用程序中使用基本的MapKitfunction。 有没有办法让我的iOS 6用户在Google和Apple地图之间select我的应用程序中提供的地图数据? 如果是这样,我怎么能编程呢?

平滑调整MKCircle

在调整NSSlider时,如何在UIMapView上顺利调整MKCircleView的大小? 在创build地理围栏时,苹果已经在“ 查找我的朋友”应用中做到了这一点,所以我想这是可能的。 到目前为止,我已经尝试了下面的解决scheme,但是有一个非常“闪烁”的结果: 第一次尝试 我添加了一个新的MKCircleView具有更新的半径,并立即删除(当在这里build议MKOverlay不顺利resize )当滑块更改值后。 我也尝试了另一种方式:首先删除覆盖,然后添加一个新的,但具有相同的“flickery”结果。 – (void)sliderChanged:(UISlider*)sender { double radius = (sender.value * 100); [self addCircleWithRadius:radius]; [mapView removeOverlays:[self.mapView.overlays firstObject]]; } 第二次尝试 在链接的SO答案中,他build议NSOperation可以用来“帮助你更快地创buildMKCircle对象”,从而在幻灯片更改值时使用上述添加/删除叠加的方法使调整更平滑。 我做了一个实现,当滑块更改时,我开始一个新的线程。 在每个线程中,我删除所有旧的覆盖,并添加一个新的更新的比例。 也许他还有一些其他的实现方式,因为我做这件事的方式在更改滑块时仍然会有相同的闪烁。 – (void)sliderChanged:(UISlider*)sender { NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(updateOverlayWithScale:) object:[NSNumber numberWithFloat:sender.scale]]; [self.queue addOperation:operation]; } 运行我的每个线程的方法: – (void)updateOverlayWithScale:(NSNumber *)scale { MKCircle *circle = [MKCircle circleWithCenterCoordinate:self.currentMapPin.coordinate radius:100*[scale floatValue]]; […]

在iOS6中,MKMapView是否会自动使用谷歌地图,因为谷歌地图是在iOS6中恢复的?

由于苹果已经恢复谷歌地图在iOS6,如果我在我的iPhone应用程序中使用MKMapView ,它会自动使用谷歌地图?

如何在Mapkit中增加userLocation注解的半径

我的应用程序需要用户权限并将地图移动到该位置。 并在该位置默认情况下MapKit添加一个蓝色的图标,这是产生一些脉冲。 我search了一下,但是我发现如何在userLocation周围添加一个1000米的圆。 我不要那个。 你可以说我正在寻找自定义userLocation默认annotation 。 它产生的蓝色脉冲我想增加这个radius 。 当这个蓝色的脉冲击中一个自定义annotation ,应该有一个触发的方法。 那么如何实现呢?

MKMapView不断地监视标题

我正在渲染一个位于我的MKMapView之上的图层中的一些内容。 除了旋转,整个事情都很好。 当用户旋转地图时,我需要能够旋转我在自己的图层中呈现的内容。 我发现的标准答案是使用: NSLog(@"heading: %f", self.mapView.camera.heading"); 问题在于标题variables的内容仅在捏放/旋转手势结束时才更新,而不是在手势期间更新。 我需要更频繁的更新。 mapView本身没有标题属性。 我想也许使用这样的KVO : // Somewhere in setup [self.mapView.camera addObserver:self forKeyPath:@"heading" options:NSKeyValueObservingOptionNew context:NULL]; // KVO Callback -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if([keyPath isEqualToString:@"heading"]){ // New value } } 然而KVO的听众从来不会发火,这并不奇怪。 有没有我忽略的方法?