iphone蓝点和针同时 -
Posted
技术标签:
【中文标题】iphone蓝点和针同时 -【英文标题】:iphone blue dot AND pin at same time - 【发布时间】:2011-05-05 15:47:30 【问题描述】:请帮忙,这个问题已经被问过很多次了,但是人们的建议对我的结果没有影响,我想要的只是要在地图上显示的图钉和蓝色圆圈(准确度),这是我的实现. - 哦,我使用的是 iPhone 设备 - 我不在模拟器中
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
NSLog(@"View for Annotation is called");
if (NSClassFromString(@"MKUserLocation")==[annotation class])
return nil;
if (annotation == mapView.userLocation)
return nil;
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.pinColor = MKPinAnnotationColorGreen;
UIButton * btn = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
annView.rightCalloutAccessoryView = btn;
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
pinDropped = TRUE;
return annView;
提前欢呼……该死的东西
【问题讨论】:
您是否将 mapView.showsUserLocation 设置为 YES?第二个if
没有意义,因为它只是检查注解是否与自身相同。
yes 设置所有需要设置的内容,删除第二个 if 语句.. 干杯
正在显示什么?你得到别针了吗?还是你得到蓝点和圆圈?或者两者都不是?在不知道实际得到什么的情况下很难进行调试。
如果我检查注释是否为 kindOfClass MKUserLocation,我只会得到蓝色圆圈,如果我忽略检查并直接创建一个 MKPinAnnotationView 对象 - 我得到了 pin,抱歉 - 应该这样做更清晰
只是为了确认:您会在控制台上看到“调用注释视图”消息,对吧?您能显示将引脚添加到地图的代码的 addAnnotation 部分吗?上面的代码应该可以工作,但您只需要其中一个 if 语句。
【参考方案1】:
如果您使用的是模拟器,那么您可能会遇到 CoreLocation 和 MapKit 计算您当前位置的方式不为人知的差异。
在模拟器中
CoreLocation 将始终使用位于美国加利福尼亚州库比蒂诺的 Apple 总部作为您当前的位置。这是蓝点将始终出现在地图上的位置。
MapKit 将始终使用 Apple 的 IP 地址和 WiFi 热点信息数据库来近似您的实际当前位置。如果您告诉它使用您当前的位置,这就是地图的中心位置。
因此,地图将以您当前位置为中心,但蓝点将在库比蒂诺结束。
在 ios 设备上
CoreLocation 将蓝点放在与您当前实际位置近似的位置上。
MapKit 以近似您当前实际位置的位置为中心。
因此,当您使用实际的 iOS 设备时,您会在地图中心看到蓝点。
这一点知识可以减轻很多压力。 :)
【讨论】:
很久以前读过这个信息,也许我的问题应该说明我使用iPhone设备而不是模拟器来定位。我很清楚哪个 api 做了什么以及它显示/提供了什么信息 - 我之前已经显示了 pin 和蓝色近似圆。问题是,如何同时显示图钉和蓝色圆圈,而不是 mapkit / CL 如何获得我的位置,但感谢您提供的信息 @burrows111 人们有这个问题是一个非常普遍的原因,所以值得一试。请看一下我对您问题的澄清评论,上面。 干杯马修 :) - 至少我们都排序了......这确实是一个普遍的问题,我知道我忽略了一些东西。快乐编码...@Matthew Frederick【参考方案2】:以防万一有人想知道,这也有效:
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
【讨论】:
【参考方案3】:这适用于我的代码
if(annotation == mapView.userLocation)
return nil;
尝试一下并告诉我们
【讨论】:
那个也没有运气:( - 我显然忽略了一些东西。我在我的问题中显示了你的建议。谢谢【参考方案4】:确保已实现 [mapview addAnnotation:annotation];
感谢安娜的提醒。
【讨论】:
以上是关于iphone蓝点和针同时 -的主要内容,如果未能解决你的问题,请参考以下文章