Iphone MapView捕捉回原始位置-帮助!
我有一个带有自定义注释的mapView,在一个beta测试仪的iPhone上遇到了一个问题。mapView不允许用户移动到任何位置。。只要您尝试移动,它就会立即恢复到原始坐标 知道为什么吗?它不会在模拟器中发生,我在自己的设备上注意到了一点。。。但在另一台设备上,这是一个始终如一的问题 非常感谢Iphone MapView捕捉回原始位置-帮助!,iphone,mkmapview,android-mapview,Iphone,Mkmapview,Android Mapview,我有一个带有自定义注释的mapView,在一个beta测试仪的iPhone上遇到了一个问题。mapView不允许用户移动到任何位置。。只要您尝试移动,它就会立即恢复到原始坐标 知道为什么吗?它不会在模拟器中发生,我在自己的设备上注意到了一点。。。但在另一台设备上,这是一个始终如一的问题 非常感谢 static BOOL haveAlreadyReceivedCoordinates = NO; - (void)locationManager:(CLLocationManager *)manage
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];
}
艾奇让你走上了正确的道路。你不应该不断地将地图的中心重置为你从位置管理器得到的任何东西。位置管理器将向您发送各种更新 您可能希望只使用一次更新,然后忽略将来的更新(通过设置某种标志),或者您可能希望仅在用户按下按钮时将地图居中于用户位置。在后一种情况下,在
didUpdateToLocation:
中只需将新位置存储到某个成员变量中
在模拟器中看不到这一点的原因是位置硬件模拟器没有像真实模拟器那样不断更新 我有过一次。检查您的委托方法。我猜,在迪德的某个地方,你在叫他回去。。。。另外,发一些代码…嗨,亲爱的。。。我已经更新了我的问题以包含我的代码。我是否应该在完成后添加StopUpdateLocation以避免不断移动?谢谢nss!这更有道理。。我现在的问题是:为什么我的地图会一直使用新的位置?或者,如何使我的地图只使用一次?嗯,地图正在使用新位置,因为您在
didUpdateToLocation
中告诉它。您可以做的是保留一个布尔成员变量(比如mapLocationUpdated
),该变量最初为false。在didUpdateToLocation
中,只有当mapLocationUpdated`为false时,才应调用[mapView setCenterCoordinate:loc]。调用后,将mapLocationUpdated
设置为true
。或者,您可以在处理一次位置后,在didUpdateToLocation
中告诉位置管理器停止更新位置。谢谢nss!我非常喜欢使用布尔值选项。我如何告诉didUpdateToLocation
仅在它为false时更新?我刚刚用布尔值选项更新了我的问题。当我首先访问“地图”选项卡时,效果非常好。。但再次访问时,该位置不起作用。。我怎么能解决这个问题?都解决了。。。我在视图中添加了布尔值将出现
。。。谢谢nss!