HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 用于用户定位的自定义注释视图,不会移动mapview大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们可以为iOS中的用户当前位置定制注释视图吗? @H_262_2@我需要用自己的自定义视图删除蓝点(带圆圈)(说一些ping pin).有可能做到吗?

@H_262_2@如果我们这样做,当用户位置发生变化时,这个引脚是否移动到新的位置?或者我们需要以编程方式处理它?

@H_262_2@我观察到,如果我们使用用户当前位置的认蓝点,那么当用户位置发生变化时,它会在地图中更新.

@H_262_2@我只想知道这是否可以用我们自己的自定义视图来完成.

解决方法

是的,您可以为用户的位置定制视图. @H_262_2@不幸的是,实现起来比应该更难,因为即使documentation for the viewForAnnotation delegate method声称如果注释类是MKUserLOCATIOn,您只能提供自己的视图,那么自定义视图不会随着用户的位置继续移动.事实上,当为MKUserLOCATIOn返回自定义视图时,地图视图将完全停止更新用户位置(地图视图的didupdateUserLOCATIOn委托方法不再触发).我相信这是一个错误.

@H_262_2@解决方法是使用CLLOCATIOnManager和自定义注释…

@H_262_2@确保在地图视图上显示显示”位置为“否”或“未选中”.

@H_262_2@使用实现MKAnnotation协议的自定义类声明CLLOCATIOnManager的属性自定义注释(或者您可以使用通用的MKPointAnnotation类).

@H_262_2@在viewDidLoad或其他适当的位置,创建CLLOCATIOnManager,设置其委托并调用startupdatingLOCATIOn.

@H_262_2@在location manager’s didUpdateToLocation delegate method(不是地图视图的didupdateUserLOCATIOn委托方法)中,创建或更新您的自定义注释:

-(void)LOCATIOnManager:(CLLOCATIOnManager *)manager didupdateToLOCATIOn:(CLLOCATIOn *)newLOCATIOn fromLOCATIOn:(CLLOCATIOn *)oldLOCATIOn
{
    if (myUserLocAnnot == nil)
    {
        self.myUserLocAnnot = [[[MyUserLocClass alloc] init] autorelease];
          //remove the autorelease if using ARC
        myUserLocAnnot.title = @"You are here";
        myUserLocAnnot.coordinate = newLOCATIOn.coordinate;
        [mapView addAnnotation:myUserLocAnnot];
    }
    else
    {
        myUserLocAnnot.coordinate = newLOCATIOn.coordinate;
    }
}
@H_262_2@最后,在地图视图的ViewForAnnotation委托方法中,如果注释是您的自定义用户位置注释,则将返回自定义注释视图.

大佬总结

以上是大佬教程为你收集整理的ios – 用于用户定位的自定义注释视图,不会移动mapview全部内容,希望文章能够帮你解决ios – 用于用户定位的自定义注释视图,不会移动mapview所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。