标签: mapkit

如何传递prepareForSegue:一个对象

我在mapview中有很多注释(带rightCalloutAccessory按钮).该按钮将执行从此mapview到a 的segue tableview.我想传递tableview一个不同的对象(保存数据),具体取决于单击了哪个标注按钮.

例如:(完全组成)

  • annotation1(奥斯汀) - >传递数据obj 1(与奥斯汀相关)
  • annotation2(达拉斯) - >传递数据obj 2(与达拉斯有关)
  • annotation3(休斯敦) - >传递数据obj 3等等......(你明白了)

我能够检测到哪个标注按钮被点击了.

我正在使用prepareForSegue:将数据obj传递到目标ViewController.由于我无法进行此调用,因此需要为我需要的数据提供额外的参数,有哪些优雅的方法可以实现相同的效果(动态数据obj)?

任何提示将不胜感激.

xcode storyboard uitableview mapkit ios

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

如何模拟地图应用中的底部工作表?

任何人都可以告诉我如何在iOS 10中的新地图应用程序中模仿底页?

在Android中,您可以使用BottomSheet模仿此行为的模式,但我找不到类似iOS的内容.

这是一个带有内容插入的简单滚动视图,以便搜索栏位于底部吗?

我对iOS编程很新,所以如果有人可以帮助我创建这个布局,那将非常感激.

这就是我所说的"底页":

地图中折叠的底部工作表的屏幕截图

地图中展开的底部工作表的屏幕截图

uiscrollview uiview mapkit ios swift

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

以编程方式在iOS 6中打开地图应用

在iOS 6之前,打开这样的URL会打开(Google)地图应用:

NSURL *url = [NSURL URLWithString:@"http://maps.google.com/?q=New+York"];
[[UIApplication sharedApplication] openURL:url];
Run Code Online (Sandbox Code Playgroud)

现在有了新的Apple Maps实现,这只会将Mobile Safari打开到Google Maps.如何在iOS 6中实现相同的行为?如何以编程方式打开地图应用并将其指向特定位置/地址/搜索/其他?

objective-c mapkit ios ios6

159
推荐指数
5
解决办法
10万
查看次数

设置MKMapView的缩放级别

我有一张正确显示的地图,我现在唯一要做的就是在加载时设置缩放级别.有没有办法做到这一点?

谢谢

iphone mapkit ios

109
推荐指数
8
解决办法
10万
查看次数

定位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 be a dynamic size
// Obviously this should be set after I've added my annotations
[mapView setRegion:region animated:YES];

// Test data, using these as annotations for …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c mapkit ios

91
推荐指数
11
解决办法
8万
查看次数

如何自定义MKAnnotationView的标注气泡?

我目前正在使用mapkit并且卡住了.

我有一个我正在使用的自定义注释视图,我想使用image属性在我自己的图标上显示地图上的点.我有这个工作正常.但我还想做的是覆盖默认的标注视图(触摸注释图标时显示标题/副标题的气泡).我希望能够控制标注本身:mapkit只提供对左右辅助标注视图的访问,但是没有办法为标注泡泡提供自定义视图,或者给它零大小或其他任何东西.

我的想法是覆盖我的selectAnnotation/deselectAnnotation MKMapViewDelegate,然后通过调用我的自定义注释视图来绘制我自己的自定义视图.这有效,但只有在我的自定义注释视图类中canShowCallout设置时才有效YES.如果我将此设置为NO(这是我想要的,那么不会调用这些方法,因此不会绘制默认的标注气泡).所以我无法知道用户是否在地图上触摸了我的点(选中它)或触摸了一个不属于我的注释视图(被选中)的点而没有显示默认的标注气泡视图.

我试着走另一条路,只是自己在地图上处理所有触摸事件,我似乎无法让这个工作.我在地图视图中阅读了与捕捉触摸事件相关的其他帖子,但它们并不完全是我想要的.有没有办法挖掘地图视图以在绘制之前删除标注气泡?我不知所措.

有什么建议?我错过了一些明显的东西吗

objective-c mapkit mkmapview mkannotationview ios

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

MKMapView缩放和区域

我熟悉使用Google Maps Javascript API.最近我开始使用MapKit框架进行iphone项目,但我很难找到缩放并在地图上设置区域.

在谷歌地图API中,我曾经使用整数缩放级别,如8,9,10,以及简单的函数setZoom().我在MapKit框架中看到的唯一等价方法是setRegion:animated.据我了解,我需要设置区域的跨度的纬度和经度"delta"值来指定缩放级别.但我真的不知道这些值代表什么(我阅读文档).

当我使用MKMapView委托并跟踪regionDidChange中的span值时,委托方法结果似乎彼此不相关.当我缩小并查看文档中指定的跨度增量值正在增加时,这没关系.但突然我拖动地图而没有缩放,delta值变为0.0.

有人可以解释一下这些跨度和三角洲的参考点是什么?或者是否有任何算法将整数缩放级别(如9)转换为这些delta值?

作为一个额外的问题是有任何方法来指定MKMapView上的最小 - 最大缩放级别:)

谢谢

iphone cocoa-touch zoom mapkit

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

在iOS中的MapKit中绘制路线

我想在地图上的两个位置之间绘制一条路线.像导游一样的东西.当游客点击另一个位置时,我希望能够绘制一条路线; 以及通知当前位置的距离.

我知道互联网上的网站告诉我们如何在地图上绘制折线.但是,大多数示例都有一个带有各种坐标的预加载.csv文件.

是否有其他方法可以从Google或任何其他提供商处获取坐标,因为该位置是动态选择的.

如果否,我如何获取中间坐标的信息?

iOS 6是否提供了解决此问题的直接方法?

iphone mapkit ios

54
推荐指数
4
解决办法
5万
查看次数

在iOS上使用MKMapSnapshotter的VectorKit崩溃报告

我得到别样的有关崩溃报告VectorKitMKMapSnapShotter.崩溃发生得相当随机,但从背景返回时似乎发生了最多.设备在发生之前不会发出任何内存警告.

这里发生了什么事?

我正在使用:

if (!_snapshotQueue) {
    _snapshotQueue = dispatch_queue_create("com.bestappever.snapshot", DISPATCH_QUEUE_SERIAL);
}
[_snapshotter cancel]
_snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
__weak __typeof(self)__self = self;
[_snapshotter startWithQueue:queue completionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{
        __strong __typeof(__self)_self = __self;
        [_self doSomething];
    });
}];
Run Code Online (Sandbox Code Playgroud)

最常见的一个如下:

Thread 11 Crashed:
0   libobjc.A.dylib                      0x38502b66 objc_msgSend + 5
1   VectorKit                            0x35bc8997 -[VKTileProvider changeTileForKey:toState:withMetadata:withTile:forLayer:] + 51
2   VectorKit                            0x35c1f88d -[VKTileProvider tileSource:invalidateKeys:] + 168
3   VectorKit                            0x35c41325 -[VKTileSource didFailToLoadTileKey:error:] + 196
4   GeoServices                          0x32ca906b ___ZN8LoadItem15deleteRequesterEP8NSStringbb_block_invoke + 87 …
Run Code Online (Sandbox Code Playgroud)

mapkit ios ios7 mkmapsnapshotter

53
推荐指数
1
解决办法
2928
查看次数

iOS 8 Map Kit Obj-C无法获取用户位置

我使用Obj-C NOT SWIFT在iOS 8中使用Map Kit.我无法获得它设置的设备位置0.00,0.00,我收到错误:

Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.
Run Code Online (Sandbox Code Playgroud)

我实施了:(我一次只试过一次,没有运气)

if(IS_OS_8_OR_LATER) {
    [self.locationManager requestWhenInUseAuthorization];
    [self.locationManager requestAlwaysAuthorization];
}
[self.locationManager startUpdatingLocation]; 
Run Code Online (Sandbox Code Playgroud)

并在info.plist中

NSLocationWhenInUseUsageDescription  :   App would like to use your location.
NSLocationAlwaysUsageDescription  :  App would like to use your location.
Run Code Online (Sandbox Code Playgroud)

我得到提示允许应用程序使用我的位置,但在我同意没有任何变化.该位置显示为0.00,0.00.

显示用户位置的代码:

//Get Location
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self.locationManager startUpdatingLocation];

MKCoordinateRegion region = { { 0.0, 0.0 }, { 0.0, …
Run Code Online (Sandbox Code Playgroud)

objective-c mapkit cllocationmanager ios8

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