标签: mapkit

iPhone MapView仅限于密苏里州

我正在制作一款专为仅在密苏里州本地设计的iPhone应用程序.所以我的想法是将地图限制在密苏里州附近的密苏里州/地区.我让地图工作正常,显示用户的位置,如果他们更新位置,那么引脚也会移动.我可以使用自定义注释之类的东西吗?或者我可以检查用户位置并确定它是否具有某个纬度,长并显示基于此的地图?

我在制作这个项目时正在使用xCode.

iphone mapkit mkmapview

6
推荐指数
1
解决办法
450
查看次数

从数组创建CLLocationCoordinate2D

我有一个带有坐标的数组字典的plist(存储为字符串).

我想从每个数组创建一个CLLocationCoordinate2D并为地图创建一个叠加层.

我做到了 -

NSString *thePath = [[NSBundle mainBundle]  pathForResource:@"Roots" ofType:@"plist"];
    NSDictionary *pointsDic = [[NSDictionary alloc] initWithContentsOfFile:thePath];

 NSArray *pointsArray = [NSArray arrayWithArray:[pointsDic objectForKey:@"roade1"]];

 CLLocationCoordinate2D pointsToUse[256];

 for(int i = 0; i < 256; i++) {
  CGPoint p = CGPointFromString([pointsArray objectAtIndex:i]);
  pointsToUse[i] = CLLocationCoordinate2DMake(p.x,p.y);
  NSLog(@"coord %f",pointsToUse [i].longitude);
  NSLog(@"coord %f",pointsToUse [i].latitude);

 }

 MKPolyline *myPolyline = [MKPolyline polylineWithCoordinates:pointsToUse count:256];

 [[self mv] addOverlay:myPolyline];
Run Code Online (Sandbox Code Playgroud)

但应用程序崩溃没有任何错误.(顺便说一句,当我删除addOverLay方法时,应用程序不会崩溃).

我有两个问题 -

  1. 我究竟做错了什么?
  2. 我试图将pointsArray计数设置为CLLocationCoordinate2D的参数,如下所示 -

    CLLocationCoordinate2D pointsToUse [pointsArray count];

我收到了一个错误.如何动态设置CLLocationCoordinate2D?

谢谢你的帮助.沙尼

iphone mapkit

6
推荐指数
1
解决办法
5513
查看次数

获取当前位置的邮政编码 - iPhone SDK

如何使用mapkit获取当前位置的邮政编码,我没有找到任何用于获取此文档的API.我使用了CLLocationManager的坐标,attitue,水平,垂直,航向和速度参数,但未能获得邮政编码.

任何人都可以给我API或示例代码来完成它.

是否可以使用iPhone中的当前位置获取邮政编码?

objective-c mapkit ios

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

MKPointAnnotation - 默认显示标题和动画?

在我的viewWillAppear中我有一个视图

MKPointAnnotation *point = [[MKPointAnnotation alloc] init];

[point setCoordinate:(myLocation)];
[point setTitle:@"Here it is!"];

[mapView addAnnotation:point];

[mapView setRegion:adjustedRegion animated:YES]; 
Run Code Online (Sandbox Code Playgroud)

这就像我想要的那样为地图增加了一点.但是我必须点击它才能看到标注.

如何默认显示标注?

我尝试在以下之后添加: [self.mapView selectAnnotation:annotation animated:YES];

但它似乎没有用......我必须使用真正的注释而不是MKPointAnnotation来做到这一点吗?

mapkit ios ios5

6
推荐指数
1
解决办法
7318
查看次数

点击自定义标注后,MKMapKit regionDidChangeAnimated停止

我正在使用这里解释的代码(Jacob的一个)实现一个自定义的MKAnnotationView标注,它实际上放置了另一个Custom AnnotationView,因为选择了Annotation:

MKAnnotationView - 锁定自定义注释视图以固定位置更新

一切都很好,但我有一些奇怪的行为.点击自定义标注后,它将关闭标注,但之后会停止调用regionDidChangeAnimated委托方法.

我错过了什么?我可以照常平移地图,但它不会调用该委托方法.虽然如果放大或缩小它会被调用.

在为我正在放置的AnnotationView添加自定义CallOut之前,这种情况从未发生过.

Thx提前.

此致,艾伦//

objective-c mapkit mkannotationview ios

6
推荐指数
1
解决办法
585
查看次数

禁用MKmapkit mapView userLocation annotationView

我有一个mapViewannotationViewsuserLocation蓝点.

我使用以下代码获取蓝点:

[self.mapView setShowsUserLocation:YES];
Run Code Online (Sandbox Code Playgroud)

annotationViews可选择,并有标注.

但是,如果一个annotationView接近用户的位置,有时蓝点会窃取触摸.

我可以设置一个annotationView.enabled = NO;,它会显示annotationView但它不会从附近偷一个触摸annotationView.

我想将用户位置蓝点设置annotationView为enabled = NO,因此它不会触及附近的触摸annotationViews.

我可以设置蓝点的标题:

self.mapView.userLocation.title = @"title here..."
Run Code Online (Sandbox Code Playgroud)

但我无法禁用蓝点.

谢谢!

objective-c mapkit userlocation ios

6
推荐指数
1
解决办法
1563
查看次数

将MKMapView的一部分渲染为图像

我有兴趣捕捉地图的一部分,以创建您在弹出窗口顶部看到的图像.我想我会捕获一个UIImage,你可以从引脚的坐标开始这样做吗?

谢谢

Apple地图popover

mapkit mkmapview uipopovercontroller ios

6
推荐指数
2
解决办法
1619
查看次数

MKOverlayRenderer比MKOverlayView差吗?

我正在开发一个基于地图的应用程序,我正在使用MBXMapKit框架(构建在MapKit上),以便在我的MapView中显示自定义Mapbox地图图块而不是默认的Apple图.然而,虽然Apple的地图是矢量,但Mapbox仍然是光栅图像切片,因此它们被MBXMapKit框架显示为叠加.

这一切都很好,直到我用地图在地图上绘制折线MKOverlay.根据我的理解,在iOS 7之前,你会提供一个MKOverlayViewMapView委托,它将被渲染到地图上,但是现在在iOS 7中,已经被弃用了MKOverlayRenderer,如果我理解正确,它的功能更像是一个drawRect各种各样,我直接绘制到一个上下文,结果显示在地图上(我意识到这不是它的工作原理,但重点是我不再能够访问一个普通的旧版本UIView,这就是我的问题出现的地方).

第一个问题是,当我的叠加层被绘制到地图时,它会逐层绘制.这很好,除了叠加图块似乎与底层的Mapbox图像图块合成.这样可以看到一个简单的折线,有3或4个点需要一个坚实的半秒来渲染(在A7 iPad Air上),你可以看到它在'chunks'中出现,因为每个瓷砖都被重新绘制.它也出于某种原因导致所有未受影响的Mapbox磁贴重新加载(它们都闪烁一瞬间).从UX的角度来看,这看起来像个笑话,完全不可接受.

第二个问题是,因为我不再能够访问UIViewiOS 6中的内容,我不知道如何为叠加设置动画 - 我想要的是淡化折线而不是立即显示它(虽然在这一点上,我会立即显示整个事物,然后看着它逐渐渲染,就像是从点阵式打印机中吐出一样,但你得到了我的观点).

所以我的主要问题是,我是否遗漏了某些东西,或者MKOverlayRendererFAR是否比FAR更不灵活和有用MKOverlayView?从逻辑上讲,您可以将地图上的图层视为可以操纵的单个对象,将事件绑定到它等等,而不是将某些光栅像素数据刻录到地图中,并且永远不能再修改或者与之交互(没有重新绘制整个内容),这样的线程似乎表明Apple已经基本上删除了使用您以前能够轻松完成的叠加来执行大量操作的功能.

由于MKOverlayView现在已弃用,因此不再调用相应的委托方法,这些问题是否有解决方案?由于性能问题和缺乏动画能力,我现在无法将其用于生产应用程序.

编辑:我在绘制时注意到的另一个性能问题MKOverlay是它会影响在绘图发生时发生的其他动画 - 当我点击地图注释时,工具提示会在折线渲染开始的同时弹出动画,确保足够,渲染会导致工具提示动画丢帧.

uikit mapkit ios

6
推荐指数
1
解决办法
2246
查看次数

没有加载缩放的MKMapView图块

我有一个问题.我正在使用a MKMapView来显示一些注释.我使用默认缩放初始化地图视图.它会显示一些地图.

在此输入图像描述

但是当我尝试缩放时,瓷砖没有加载,并且地图变空.像这样.

在此输入图像描述

我通过界面构建​​器创建了Map View.

@property (nonatomic, weak) IBOutlet MKMapView* mapView;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?是否存在任何强制实施方法,这些方法会对此功能产生影响?是的,我的设备上有互联网连接.

iphone objective-c mapkit mkmapview ios

6
推荐指数
1
解决办法
1783
查看次数

将PinTintColor调整为适用于mapkit的Ray Wenderlich教程

我正在使用教程来构建我的第一个应用程序.http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial

我搜索了pintintcolor但没有出现.

基本上,本教程使用此代码来设置颜色

// pinColor for disciplines: Sculpture, Plaque, Mural, Monument, other
func pinColor() -> MKPinAnnotationColor{
    switch discipline {
    case "Sculpture", "Plaque":
        return .Red
    case "Mural", "Monument":
        return .Purple
    default:
        return .Green
Run Code Online (Sandbox Code Playgroud)

麻烦就是这就是苹果在开发者网站上的含义

https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_11/Swift/MapKit.html

修改了MKPinAnnotationView声明

从:

class MKPinAnnotationView : MKAnnotationView {
    var pinColor: MKPinAnnotationColor
    var animatesDrop: Bool
}
Run Code Online (Sandbox Code Playgroud)

至:

class MKPinAnnotationView : MKAnnotationView {
    class func redPinColor() -> NSColor
    class func greenPinColor() -> NSColor
    class func purplePinColor() -> NSColor
    var pinTintColor: NSColor!
    var animatesDrop: Bool
    var pinColor: MKPinAnnotationColor
} …
Run Code Online (Sandbox Code Playgroud)

xcode mapkit ios swift

6
推荐指数
2
解决办法
3949
查看次数