首先,一些代码:
-(MKAnnotationVIEw *)mapVIEw:(MKMapVIEw *)mapVIEw vIEwForAnnotation:(ID<MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) { _userLocationVIEw = [[MKAnnotationVIEw alloc] initWithAnnotation:annotation reuseIDentifIEr:@"userLocationIDentifIEr"]; //use a custom image for the user annotation _userLocationVIEw.image = [UIImage imagenamed:@"userLocationCompass.png"]; return _userLocationVIEw; } else { return nil; }}-(voID)locationManager:(CLLocationManager *)manager dIDUpdateheading:(CLheading *)newheading { //rotate user location annotation based on heading from location manager. if (!_locatorbutton.hIDden) { CLLocationDirection direction = newheading.magneticheading; CGAffinetransform transform = CGAffinetransformMakeRotation(degreesToradians(direction)); _userLocationVIEw.transform = transform; }}-(voID)GPSbuttonpressed:(ID)sender { if (self.GPSEnabled) { //if GPS is already on,disable it. _mapvIEw.showsUserLocation = NO; [_mapvIEw removeAnnotation:_mapvIEw.userLocation]; self.GPSEnabled = NO; [_locationManager stopUpdatingheading]; } else { //enable GPS. _mapvIEw.showsUserLocation = YES; self.GPSEnabled = YES; if ([CLLocationManager headingAvailable]) { [_locationManager startUpdatingheading]; } }}
用户位置注释图像显示正常,并根据标题旋转,但这里是有趣的行为:
1-注释不遵循我的位置 – 它只停留在一个地方,但是以正确的标题旋转.如果我使用“GPS按钮”关闭GPS,然后将其重新打开,注释会显示在正确的位置,但在我走路时仍然不会跟随.
2-如果我滚动地图,注释会d回到正北方,然后快速旋转到正确的标题,从而产生恼人的闪烁效果.
3-如果我关闭GPS并删除用户位置,则会按预期删除注释,但如果我滚动地图,则注释会d回屏幕而不是隐藏.
我究竟做错了什么?感谢任何有用的提示!
解决方法 即使您可能已经修复了2.问题,我仍然希望分享解决方案,这有助于解决类似的问题.我遇到了同样的问题:当用户滚动或平移地图时,我的自定义用户位置箭头旋转总是d回北方.我在这里找到了修复:https://stackoverflow.com/a/12753320/2030629
根据作者,它是一个但在ios6中,可以通过添加来修复
if(is6orMore) { [annVIEw settransform:CGAffinetransformMakeRotation(.001)]; //iOS6 BUG WORKAROUND !!!!!!! }
to mapVIEw:vIEwForAnnotation.
我还在 – mapVIEw:regionDIDChangeAnimated:中再次设置了变换.希望这会让别人感到高兴,因为它让我:)
总结以上是内存溢出为你收集整理的ios – 使用标题转换用户位置注释全部内容,希望文章能够帮你解决ios – 使用标题转换用户位置注释所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)