这次更换百度,让我纠结了很久(约一个星期),其中遇到各种各样奇怪、恶心的问题,在攻克这些问题之后,有必要做一个较为全面的总结,希望能帮到遇到类似问题的童鞋。
1,百度地图在xcdoe 4.5和ios6.0上编译真机版时,不能编译过。
解决办法:将真机版与ios simulater版合并,合并方法百度在线指导文档上有,而下载下来的 pdf文档上没有。(这个有点蛋疼)
2,mapView的实例,调用userLocationVisible时,“常常不准确”。
解决办法:通过反复调试,发现,在mapview 的region完全改变后,通过这个属性所获取的值,是正确的。即:
可在 - (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated 代理中设置标志位,只要在标志位有效时,才使用userLocationVisible属性。
3,对于自定义的BMKAnnotationView 时,使用dequeueReusableAnnotationViewWithIdentifier时,如果涉及到更换图片或者文字时,最好是先设置成nil,再重新设置一次。例如:
static NSString* identifier = @"pin_annotation";
TSAnnotationView* view = (TSAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (!view) {
view = [[TSAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
view.annotation = annotation;
} else {
view = nil;
view = [[TSAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
view.annotation = annotation;
}
TSAnnotationView* view = (TSAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (!view) {
view = [[TSAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
view.annotation = annotation;
} else {
view = nil;
view = [[TSAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
view.annotation = annotation;
}
其中,TSAnnotationView是我自定义的AnnotationView。