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蓝点和针同时 -的主要内容,如果未能解决你的问题,请参考以下文章

iOS6 - MKMapView 当前位置蓝点

蓝点位置地图包

解决 idea web项目没有小蓝点的问题

为啥我的 MapKit 中的蓝点(用户位置)会移动?

更改谷歌地图当前位置蓝点颜色 iOS

为当前位置自定义谷歌地图蓝点