我有一个带有自定义注释的mapView,并且在beta测试者的iPhone上遇到了问题。 mapView不会让用户移动到任何位置..一旦你尝试移动,它就会快速回到原始坐标。
知道为什么吗?它不会发生在模拟器中,我会在自己的设备上发现它...但它在另一台设备上是一致的问题。
非常感谢!
static BOOL haveAlreadyReceivedCoordinates = NO;
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if(haveAlreadyReceivedCoordinates) {
return;
}
haveAlreadyReceivedCoordinates = YES;
CLLocationCoordinate2D loc = [newLocation coordinate];
[mapView setCenterCoordinate:loc];
}
答案 0 :(得分:1)
Icky让你走上正轨。您不应该经常将地图中心重置为从位置管理员处获得的任何内容。位置经理会向您发送各种更新。
您可能希望仅使用更新一次,然后忽略将来的更新(通过设置某种标记),或者您可能希望仅在用户按下按钮时将地图置于用户位置的中心。在后一种情况下,您在didUpdateToLocation:
中唯一需要做的就是将新位置存储到某个成员变量中。
您在模拟器中没有看到这一点的原因是位置硬件模拟器不会不断更新真实模式。