MKPinAnnotationView 红色图钉替换为图片
Posted
技术标签:
【中文标题】MKPinAnnotationView 红色图钉替换为图片【英文标题】:MKPinAnnotationView red pin is replaced with image 【发布时间】:2013-01-03 04:30:12 【问题描述】:我已将MKPinAnnotationView
红色别针替换为图片
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation
MKAnnotationView *annotationView=[mapView dequeueReusableAnnotationViewWithIdentifier:parkingAnnotationIdentifier];
//If one isn’t available, create a new one
if(!annotationView)
annotationView=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:parkingAnnotationIdentifier];
//Here’s where the magic happens
annotationView.image=[UIImage imageNamed:@"dot.png"];
return annotationView;
现在我有一个详细信息披露,当我单击任何按钮时,它将转到该注释的详细页面。
到这里还好。现在的问题是,当我从详细信息页面再次返回地图视图时,会出现默认的红色图钉而不是 dot.png,因为当第一次加载视图时-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation
这个方法被调用了,但是当我们从详细页面视图返回时会出现没有被调用。如何解决这个问题?
if ([list_array count]>0)
location1.latitude = [[[list_array objectAtIndex:0]valueForKey:@"latitude"]floatValue];
location1.longitude = [[[list_array objectAtIndex:0]valueForKey:@"longitude"]floatValue];
region.center = location1;
if ([[list_array objectAtIndex:0]valueForKey:@"company_id"])
for (int i=0; i<[list_array count]; i++)
CLLocationCoordinate2D location1;
location1.latitude = [[[list_array objectAtIndex:i]valueForKey:@"latitude"]floatValue];
location1.longitude = [[[list_array objectAtIndex:i]valueForKey:@"longitude"]floatValue];
region.span = span;
BasicMapAnnotation *addAnnotation1 = [[BasicMapAnnotation alloc] initWithLatitude:location1.latitude andLongitude:location1.longitude] ;
addAnnotation1.tag = i;
[mapView addAnnotation:addAnnotation1];
[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];
//[self.view addSubview:self.mapView];
【问题讨论】:
【参考方案1】:只需在 viewWillAppear:
或 viewDidAppear:
方法中添加整个引脚或 setRegion
当我们在MKMapView
中addAnnotation
时再次调用viewForAnnotation
,所以只需调用它或使用setRegion
的setRegion
方法刷新它MKMapView
。
或者只是删除这些整个引脚并再次添加viewDidAppear:
,如下所示......
-(void)viewDidAppear:(BOOL)animated
NSArray *existingpoints = mapView.annotations;
if ([existingpoints count] > 0)
[mapView removeAnnotations:existingpoints];
if ([[list_array objectAtIndex:0]valueForKey:@"company_id"])
for (int i=0; i<[list_array count]; i++)
CLLocationCoordinate2D location1;
location1.latitude = [[[list_array objectAtIndex:i]valueForKey:@"latitude"]floatValue];
location1.longitude = [[[list_array objectAtIndex:i]valueForKey:@"longitude"]floatValue];
region.span = span;
BasicMapAnnotation *addAnnotation1 = [[BasicMapAnnotation alloc] initWithLatitude:location1.latitude andLongitude:location1.longitude] ;
addAnnotation1.tag = i;
[mapView addAnnotation:addAnnotation1];
[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];
希望对你有帮助...
【讨论】:
它没有被称为先生......我保留了 [mapView setRegion:region animated:YES]; 好的,但现在我只是给出必须完全正常工作的逻辑,只需删除整个注释(引脚)并在 viewDidLoad 方法中再次添加这些整个引脚.. 等待我会更新答案.. 只需将添加注释的代码发布到您使用该代码的方法中 是的,6 个月前...然后我改变主意,添加图片代替图钉。 @Vishal ohhh 来自旁遮普邦??哇,兄弟,我喜欢那种状态,也喜欢人 yaar bahot hi pyare log aur bahot a6e hote he yaar waha k log .. nice .. :)以上是关于MKPinAnnotationView 红色图钉替换为图片的主要内容,如果未能解决你的问题,请参考以下文章
MKPinAnnotationView - 不同引脚的不同动作
MKPinAnnotationView 子类上未调用 drawRect
可拖动的 MKPinAnnotationView 不起作用。 draggable = YES,callout有title和subtitle,setCoordinate实现