我有一个错误,当我点击导航栏上的后退键并且卸载了具有MapKit(mapView)并使用位置管理器的视图时,我的应用程序崩溃了"EXC_BAD_ACCESS".试了好几天来修复这个bug,最后找到了解决这个问题的人的修复:
将此代码添加到您的dealloc
- (void)dealloc {
mapView.delegate = nil;
locationManager.delegate = nil;
[mapView release];
[locationManager release];
}
Run Code Online (Sandbox Code Playgroud) 我遇到了很多这样的崩溃事件.在我的代码中,我没有在我的MKAnnotation对象上做任何可以解释此异常的KVO.所以对我来说,它看起来像是一个iOS错误.
有没有其他人遇到类似的崩溃?
*** Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer for the key path "title" from because it is not registered as an observer.'
Thread 0 Crashed:
0 libSystem.B.dylib 0x000792d4 __kill + 8
1 libSystem.B.dylib 0x000792bd raise + 17
2 WhereTo 0x000a430d uncaught_exception_handler (PLCrashReporter.m:137)
3 CoreFoundation 0x000a0adf __handleUncaughtException + 239
4 libobjc.A.dylib 0x00006593 _objc_terminate + 103
5 libstdc++.6.dylib 0x00042df9 __cxxabiv1::__terminate(void (*)()) + 53
6 libstdc++.6.dylib 0x00042e4d std::terminate() + 17
7 libstdc++.6.dylib 0x00042f1d __cxa_throw + 85 …Run Code Online (Sandbox Code Playgroud) 我正在开发我的第一个应用程序,在其中我只是尝试按下按钮单击显示带引脚的地图(以及此引脚位置上的标题).我能够加载mapview并让它显示我想要的坐标.但是当我试图显示引脚和注释时,我遇到了问题.不知道在哪里编码以及如何使注释显示引脚.我搜索并看过很多教程,但是大多数都显示了不同的mapview样式,并且在用户选择上显示引脚,我想在地图加载时显示引脚.
这是我必须显示正在工作的地图但没有引脚显示或注释的代码:
FirstLocateViewController.m代码:
#import "FirstLocateViewController.h"
@implementation FirstLocateViewController
@synthesize dismissViewButton;
-(IBAction)dismissView:(id)sender {
[self dismissModalViewControllerAnimated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
CGRect frame = CGRectMake(0,0, 320,420);
mapView = [[MKMapView alloc] initWithFrame:frame];
mapView.mapType = MKMapTypeStandard;
CLLocationCoordinate2D coord = {latitude: 12.3456, longitude: -7.890};
MKCoordinateSpan span = {latitudeDelta: 0.05, longitudeDelta: 0.05};
MKCoordinateRegion region = {coord, span};
[mapView setRegion:region];
[self.view addSubview:mapView];
Run Code Online (Sandbox Code Playgroud)
}
FirstLocateViewController.h代码:
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <MapKit/MKAnnotation.h>
@interface FirstLocateViewController : UIViewController <MKMapViewDelegate> {
UIButton *dismissViewButton;
MKMapView *mapView;
}
@property (nonatomic, retain) IBOutlet UIButton *dismissViewButton; …Run Code Online (Sandbox Code Playgroud) 我需要显示没有街道名称的地图.是否有可能使用MKMapView?如果没有,是否有支持此功能的iO的不同地图API?
谢谢,尼姆罗德
我正在开发一个导航应用程序来显示转弯驾驶路线.在iOS 6中,我们必须将数据传递到ios地图应用程序,但我想在不离开应用程序的情况下显示它.
Apple已经在iOS 7中引入了新的方向API,所以现在在iOS 7中可以在应用程序中显示Turn By Turn Navigation(在MKMapView中)?
我想弄清楚如何使用新MKOverlayPathRenderer类.
在我的应用程序中,我以前MKOverlayPathView在使用iOS 6 SDK构建时使用过,但它似乎不适用于iOS 7 SDK.
所以我试图将我的应用程序MKOverlayPathView移至
MKOverlayPathRenderer,但到目前为止没有成功.
MKPolylineRenderer工作正常,但MKOverlayPathRenderer没有.代码被调用,但在地图上没有绘制叠加.
有人有一个有效的例子MKOverlayPathRenderer吗?
我在我的iOS应用程序中有一个普通的地图,其中"显示用户位置"已启用 - 这意味着我在地图上有我的正常蓝点,显示我的位置和准确度信息.标注在代码中被禁用.
但我也有定制的MKAnnotationViews,它们在地图上绘制,所有这些都有自定义标注.
这工作正常,但问题是当我的位置在MKAnnotationView的位置时,蓝点(MKUserLocation)拦截触摸,因此MKAnnotationView不会被触及.
如何禁用蓝点上的用户交互,以便MKAnnotationViews而不是蓝点拦截触摸?
这就是我到目前为止所做的事情:
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation;
{
if (annotation == self.mapView.userLocation)
{
[self.mapView viewForAnnotation:annotation].canShowCallout = NO;
return [self.mapView viewForAnnotation:annotation];
} else {
...
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个UITableViewCell,它有一个地图视图作为子视图.创建了一个Custom类,它处理所有操作,如添加注释,委托等,并将其命名为CustomeMap.swift.
之后,我改变了地图视图类的名称,CustomeMap在小区厦门国际银行,在应用程序崩溃,有时initWithCoder的方法CustomeMap,因为我还没有实现这个方法.后来我添加了如下方法:
import UIKit
import MapKit
protocol CustomeMapDelegate{
func annotationClickEvent(info:NSDictionary?)
}
class CustomeMap: MKMapView,MKMapViewDelegate,CLLocationManagerDelegate {
var locationManager:CLLocationManager?
var delegate1:CustomeMapDelegate?
var tap:UITapGestureRecognizer?
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib()
{
if CLLocationManager.authorizationStatus() == CLAuthorizationStatus.AuthorizedAlways {
self.showsUserLocation = true;
}
else
{
locationManager = CLLocationManager()
locationManager?.delegate = self;
if locationManager!.respondsToSelector("requestAlwaysAuthorization")
{
locationManager?.requestAlwaysAuthorization()
}
}
self.delegate = self
self.userInteractionEnabled = true
tap = UITapGestureRecognizer(target: self, action: "calloutAction:") …Run Code Online (Sandbox Code Playgroud) 我想用箭头方向绘制折线.据我所知,Mapkit中尚未包含这些内容.
我试图创建一个自定义的MKOverlayPathRenderer并覆盖drawMapRect但我对如何执行此操作有点困惑.
有没有办法实现我的目标?
这是我正在尝试做的一个例子
我希望我的程序在地图上显示用户位置.它起初工作然后随机停止所以我添加下面的代码试图解决它但我遇到了问题.提前致谢!
override func viewDidLoad()
{
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
if CLLocationManager.locationServicesEnabled()
{
let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
if status == CLAuthorizationStatus.NotDetermined
{
locationManager.requestAlwaysAuthorization()
}
} else {
print("locationServices disenabled")
}
locationManager.startUpdatingLocation()
self.locationManager.startUpdatingLocation()
self.mapView.showsUserLocation = true
mapView.delegate = self
centerMapOnLocation(initialLocation)
addBoundry()
}
Run Code Online (Sandbox Code Playgroud) mapkit ×10
ios ×6
mkmapview ×6
iphone ×3
ios7 ×2
mkoverlay ×2
swift ×2
annotations ×1
crash ×1
geolocation ×1
ios8 ×1
location ×1
objective-c ×1
permissions ×1
xcode ×1