我们能否在iOS的用户当前位置的自定义注解看法?
我需要我自己的自定义视图(比如一些平针)取出蓝点(用圆圈)。 是否有可能做到这一点?
如果我们这样做,确实该引脚移动到新位置时,有用户的位置变化? 还是我们需要以编程方式处理呢?
我认为,如果我们使用默认的蓝色圆点为用户的当前位置,则其获取地图更新,当有用户位置的变化。
我只是想知道这是否可以用我们自己的自定义视图来完成。
我们能否在iOS的用户当前位置的自定义注解看法?
我需要我自己的自定义视图(比如一些平针)取出蓝点(用圆圈)。 是否有可能做到这一点?
如果我们这样做,确实该引脚移动到新位置时,有用户的位置变化? 还是我们需要以编程方式处理呢?
我认为,如果我们使用默认的蓝色圆点为用户的当前位置,则其获取地图更新,当有用户位置的变化。
我只是想知道这是否可以用我们自己的自定义视图来完成。
是的,你可以对用户的位置自定义视图。
不幸的是,这是很难实现比它应该是因为即使在viewForAnnotation委托方法的文档声称,你可以提供自己的看法,如果注释类为MKUserLocation
,自定义视图不会再继续与用户的位置移动。 事实上,当定制视图则返回MKUserLocation
,地图视图完全停止(地图视图的更新用户位置didUpdateUserLocation
委托方法不再火灾)。 我相信这是一个错误。
一种解决方法是使用CLLocationManager
和一个自定义的注释...
确保showsUserLocation
是NO
或取消选中在地图视图。
声明的性质CLLocationManager
和使用实现的自定义类的自定义注释MKAnnotation
协议(或者你可以只使用通用MKPointAnnotation
类)。
在viewDidLoad
或其他一些适当的地方,创造CLLocationManager
,设置其delegate
并调用startUpdatingLocation
。
在外景经理的didUpdateToLocation
委托方法 ( 而不是地图视图的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;
}
}
最后,在地图视图中的viewForAnnotation
委托方法,你会如果注释是您的自定义用户位置标注返回自定义注解视图。