我在mapview中有很多注释(带rightCalloutAccessory按钮).该按钮将执行从此mapview到a 的segue tableview.我想传递tableview一个不同的对象(保存数据),具体取决于单击了哪个标注按钮.
例如:(完全组成)
我能够检测到哪个标注按钮被点击了.
我正在使用prepareForSegue:将数据obj传递到目标ViewController.由于我无法进行此调用,因此需要为我需要的数据提供额外的参数,有哪些优雅的方法可以实现相同的效果(动态数据obj)?
任何提示将不胜感激.
任何人都可以告诉我如何在iOS 10中的新地图应用程序中模仿底页?
在Android中,您可以使用BottomSheet模仿此行为的模式,但我找不到类似iOS的内容.
这是一个带有内容插入的简单滚动视图,以便搜索栏位于底部吗?
我对iOS编程很新,所以如果有人可以帮助我创建这个布局,那将非常感激.
这就是我所说的"底页":
在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中实现相同的行为?如何以编程方式打开地图应用并将其指向特定位置/地址/搜索/其他?
我有一张正确显示的地图,我现在唯一要做的就是在加载时设置缩放级别.有没有办法做到这一点?
谢谢
我有几个注释想要添加到我的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) 我目前正在使用mapkit并且卡住了.
我有一个我正在使用的自定义注释视图,我想使用image属性在我自己的图标上显示地图上的点.我有这个工作正常.但我还想做的是覆盖默认的标注视图(触摸注释图标时显示标题/副标题的气泡).我希望能够控制标注本身:mapkit只提供对左右辅助标注视图的访问,但是没有办法为标注泡泡提供自定义视图,或者给它零大小或其他任何东西.
我的想法是覆盖我的selectAnnotation/deselectAnnotation MKMapViewDelegate,然后通过调用我的自定义注释视图来绘制我自己的自定义视图.这有效,但只有在我的自定义注释视图类中canShowCallout设置时才有效YES.如果我将此设置为NO(这是我想要的,那么不会调用这些方法,因此不会绘制默认的标注气泡).所以我无法知道用户是否在地图上触摸了我的点(选中它)或触摸了一个不属于我的注释视图(被选中)的点而没有显示默认的标注气泡视图.
我试着走另一条路,只是自己在地图上处理所有触摸事件,我似乎无法让这个工作.我在地图视图中阅读了与捕捉触摸事件相关的其他帖子,但它们并不完全是我想要的.有没有办法挖掘地图视图以在绘制之前删除标注气泡?我不知所措.
有什么建议?我错过了一些明显的东西吗
我熟悉使用Google Maps Javascript API.最近我开始使用MapKit框架进行iphone项目,但我很难找到缩放并在地图上设置区域.
在谷歌地图API中,我曾经使用整数缩放级别,如8,9,10,以及简单的函数setZoom().我在MapKit框架中看到的唯一等价方法是setRegion:animated.据我了解,我需要设置区域的跨度的纬度和经度"delta"值来指定缩放级别.但我真的不知道这些值代表什么(我阅读文档).
当我使用MKMapView委托并跟踪regionDidChange中的span值时,委托方法结果似乎彼此不相关.当我缩小并查看文档中指定的跨度增量值正在增加时,这没关系.但突然我拖动地图而没有缩放,delta值变为0.0.
有人可以解释一下这些跨度和三角洲的参考点是什么?或者是否有任何算法将整数缩放级别(如9)转换为这些delta值?
作为一个额外的问题是有任何方法来指定MKMapView上的最小 - 最大缩放级别:)
谢谢
我想在地图上的两个位置之间绘制一条路线.像导游一样的东西.当游客点击另一个位置时,我希望能够绘制一条路线; 以及通知当前位置的距离.
我知道互联网上的网站告诉我们如何在地图上绘制折线.但是,大多数示例都有一个带有各种坐标的预加载.csv文件.
是否有其他方法可以从Google或任何其他提供商处获取坐标,因为该位置是动态选择的.
如果否,我如何获取中间坐标的信息?
iOS 6是否提供了解决此问题的直接方法?
我得到别样的有关崩溃报告VectorKit和MKMapSnapShotter.崩溃发生得相当随机,但从背景返回时似乎发生了最多.设备在发生之前不会发出任何内存警告.
这里发生了什么事?
我正在使用:
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) 我使用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) mapkit ×10
ios ×8
iphone ×4
objective-c ×4
cocoa-touch ×2
ios6 ×1
ios7 ×1
ios8 ×1
mkmapview ×1
storyboard ×1
swift ×1
uiscrollview ×1
uitableview ×1
uiview ×1
xcode ×1
zoom ×1