2011-02-09 57 views
0

我有一个自定义的注释的MapView的,只是碰到了一个beta测试的iPhone的一个问题。 mapView不会让用户移动到任何位置..只要您尝试移动,它会立即对齐原始坐标。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

我有这样的一次。检查你的委托方法。我想,在某个地方,你didUpdateToLocation告诉他回去.... otherwhise,张贴一些代码.... – Icky 2011-02-09 11:47:26

+0

你好恶心......我已经更新了我的问题,包括我的代码。一旦完成后,是否应该包含stopUpdatingLocation以避免不断移动? – 2011-02-10 06:19:45

回答

1

艾琪让你走上正轨。您不应该不断地将地图中心重置为您从位置经理处获得的任何内容。位置管理员将向您发送各种更新。

您可能希望只使用更新一次,然后忽略未来的更新(通过设置某种标志),或者您可能希望仅当用户按下一个按钮,中心对用户所在位置的地图。在后一种情况下,您需要在didUpdateToLocation:中做的唯一一件事是将新位置存储到某个成员变量中。

你没有看到这个模拟器的原因是,位置硬件模拟器没有不断更新的真实一个是这样的。