문제

일을 사용자의 현재 위도 경도와 함께 이 viewDidLoad 방법입니다.결과 지도 올바르게 나타내는 현재의 위치나 NSLog 지속적으로 보여줍니다:

2009-09-19 16:45:29.765 Mapper[671:207] user latitude = 0.000000
2009-09-19 16:45:29.772 Mapper[671:207] user longitude = 0.000000

누구나 알고 내가 누락까요?사전에 감사합니다 당신의 도움에 대한!

- (void)viewDidLoad {
    [super viewDidLoad];
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];
    [mapView setShowsUserLocation:YES];

    CLLocation *userLoc = mapView.userLocation.location;
    CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

    NSLog(@"user latitude = %f",userCoordinate.latitude);
    NSLog(@"user longitude = %f",userCoordinate.longitude);
}
도움이 되었습니까?

해결책

지도는 내가 아는 한 실제로 표시 될 때까지 사용자 위치를 얻으려고하지 않습니다. 좋은 테스트는 앱이 사용자 위치를 얻는 것이 괜찮은지 묻는 대화 상자를 언제 얻습니까? 내 경험상지도가 화면에 표시 된 후에야 항상 나타납니다.

스타트 업에 위치가 있어야하는 경우이 문제에 접근하는 가장 좋은 방법은 클래식 코어 위치 처리기 코드를 구현하고 처음부터 위치를 얻는 것입니다. 지도가 올라가면 업데이트 수신을 중지하고 추가 변경 사항을 얻을 수 있습니다 (지속적인 업데이트가 필요한 경우 표준 코어 위치 업데이트를 유지하는 것이 좋습니다. 위치 "맵에서 활성화 된 앱별로 핵심 위치를 추가로 사용하면 GPS가 항상 해고되므로 본질적으로 무료입니다.

다른 팁

ViewDidload () 메소드에서 사용자 코디네이션을 얻으려고하면 아직 초기화되지 않았기 때문에 항상 0,0 결과를 제공합니다.

"내가 어디에 있습니까?"샘플 코드 양식 Apple 사이트를 살펴 봐야합니다. 필요한 것을 설명합니다. 사용해야합니다 cllocationManager 수업. 또한 방법이 필요합니다

*-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation*

이 방법은 사용자 위치가 업데이트 될 때마다 자동으로 호출됩니다. 시뮬레이터를 사용하는 경우이 메소드는 한 번만 호출되며 일부 기본 코디네이트를 반환합니다.

도움이되기를 바랍니다.

문서에서 cllocation, 수평 정확도 또는 수직 정확도가 음수 인 경우 값을 찾을 수 없음을 의미합니다. 나는 그것이 여기서 일어나는 일이라고 생각합니다. 한 번만 보면 정확도 결과를 향상시키기 전에 대략적인 마지막으로 알려진 위치를 줄 수 있습니다.

수평 정확도 좌표의 위도와 경도는 원의 중심을 식별 하고이 값은 해당 원의 반경을 나타냅니다. 음수 값은 좌표의 위도와 경도가 유효하지 않음을 나타냅니다.

를 얻어야 합 좌표계에서 CoreLocation 대신 MapKit.맵뷰 표시됩니다 사용자의 위치를 한 후 그것이 실제로 현재의 위치에 있습니다.하기 전에 위치 결정,위도 경도들은 모두 0 으로 설정됩니다.3

을 만들어야 합니다 CLLocationManager instace,설정할 수 있습니다.할 수 있는 위치가 결정된다.

켄달 는 말했다,MKMapView 있지 않은 사용자의 위치가 완료될 때까지 로드 및 viewDidLoad 방법은 일반적으로 너무 일찍을 요청합니다.간단한 방법으로 사용하는 것보다 CoreLocation 를 구현하는 것이 MKMapViewDelegate 방법 -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation.그것은 당신에게 사용자의 위치로 그치지 않고,처리 CLLocationManager.

이 답변은 사용자 위치와 함께 맵보기를 설정하는 방법을 설명합니다.

주어진 사용자 위치로 mkmapview를 초기화하는 방법은 무엇입니까?

이것을 시도하십시오

CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude);

ViewDidAppear : 또는 지연 후 Seletor를 호출하십시오

이것을 ViewDidload 섹션에 추가하십시오

mapView.showsUserLocation = YES;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top