iphone蓝点和PIN同时 -

时间:2011-05-05 15:47:31

标签: iphone mapkit core-location

请帮助,这个问题之前已经被问过这么多次了,但是人们的建议对我的结果没有影响,我想要的只是地图上显示的针和蓝圈(准确度),这是我的实现。 - 哦,我正在使用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;

}

事先欢呼......血腥的事情

4 个答案:

答案 0 :(得分:1)

如果您正在使用模拟器,那么您可能会遇到CoreLocation和MapKit计算当前位置的方式中众所周知的差异。

在模拟器中

CoreLocation 始终使用位于美国加利福尼亚州库比蒂诺的Apple总部作为您当前的位置。这是蓝点总是出现在地图上的地方。

MapKit 将始终使用Apple的IP地址和WiFi热点信息数据库,使用与您当前实际位置近似的内容。如果您告诉它使用您当前的位置,这就是地图的中心位置。

因此,地图将以您当前的位置为中心,但是库比蒂诺的蓝点将会结束

在iOS设备上

CoreLocation 将蓝点放在接近实际当前位置的位置。

MapKit 将地图置于近似实际当前位置的位置。

因此,当使用实际的iOS设备时,您会在地图中心看到蓝点。


这一点知识可以节省很多压力。 :)

答案 1 :(得分:1)

万一有人想知道,这也有效:

if ([annotation isKindOfClass:[MKUserLocation class]])
{
    return nil;
}

答案 2 :(得分:0)

这适用于我的代码

if(annotation == mapView.userLocation){
            return nil;
 }

试试并告诉我们

答案 3 :(得分:0)

确保实现[mapview addAnnotation: annotation ];

感谢Anna的提醒。