だから私はロケーションベースのゲームを構築していて、ユーザーのロケーションを正しく初期化するのに問題があります。常に発生するとは限りませんが、場所が0,0から変更されない場合があります。
0,0ではなく、プレーヤーの場所が読み込まれるまでマップが表示されないようにする読み込みビュー(ボールト)があるため、これにより問題が発生します。したがって、ユーザーの場所が設定されていない場合、ボールトは開かずに地図が表示されます。
ユーザーの場所が確実に読み込まれるようにする他の方法はありますか?参考までに-位置情報サービスが有効になっていて、デバイスが有効になっていることをすでに確認しています。すべてが適切に有効になっている自分のデバイスでこの問題が発生しています。
ViewDidLoad:
/*Location Manager*/
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager setDistanceFilter:100.0];//Update location to network when player moves X meters
[locationManager setDesiredAccuracy:kCLLocationAccuracyKilometer];//Nearest 1000 meters (.33 miles)
[locationManager startUpdatingLocation];
/*Map View*/
mapLoaded = false;
currentFilter = 0;
[_mapView setDelegate:self];
[_mapView setShowsUserLocation:YES];
[_mapView setMapType:MKMapTypeSatellite];
ロケーションマネージャーの委任:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
//Wait until User Location is initialized (NOT 0,0)
NSLog(@"Latitude: %f, Longitude: %f",_mapView.userLocation.coordinate.latitude,_mapView.userLocation.coordinate.longitude);
if(_mapView.userLocation.location.coordinate.latitude!=0.00 && _mapView.userLocation.location.coordinate.longitude!=0.00){
//Update Player Object
[player setLatitude:_mapView.userLocation.location.coordinate.latitude];
[player setLongitude:_mapView.userLocation.location.coordinate.longitude];
[player updatePlayerLocation];//Update location to network
if(mapLoaded){//Map already loaded, call refresh
[self refreshMap];
}
else{//First load of map
[_mapView setCenterCoordinate:_mapView.userLocation.location.coordinate];
[self populateMap];
[self openVault];
mapLoaded = true;//Disable map first load
//timerMap = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(refreshMap) userInfo:nil repeats:YES];//Auto-Refresh of Map
}
}
}