2013-04-06 2 views
2

현재 MKMapView 컨트롤을 사용하는 앱을 개발 중입니다. 파란색 점 (지도 애플리케이션과 같은)을 통해 사용자의 위치를 ​​표시한다고 가정하지만 앱이 처음 장치에 설치되어 실행되면 사용자에게 승인을 요청하는 메시지가 표시되지만 허용되면 사용자의 위치가지도에 표시되지 않고 반환되는 좌표는 0.0입니다. 0.0.MKMapView userLocation 반환 좌표 0.0 0.0 앱 최초 출시시

그런 다음 앱을 끄고 멀티 태스킹에서 제거한 다음 다시 시작하면 위치가 올바르게 표시되고 올바른 좌표가 반환됩니다.

두 점 사이의 거리를 계산하고 표제를 가져올 수 있도록 CoreLocation을 사용하고 프롬프트의 사용자 지정 메시지로 설정하여 앱의 두 가지 새로 설치 중 하나를 표시합니다. (나는 왜 그런지 궁금하다.) 나는 그 마지막 문제에 대해 정말로 신경 쓰지 않지만, 그 세부 사항을 아는 것을 도울 수있다.

앱을 처음 시작했을 때 파란색을 표시하려면 어떻게해야합니까? 감사합니다

,

최대

+0

사용자 위치를 업데이트하는 데 시간이 걸릴 수 있습니다. 핵심 위치를 사용하여 사용자의 현재 위치를 업데이트합니다. 이것은 아마도 - [CLLocationManager startUpdatingLocation] 또는 이와 유사한 메소드를 호출하여 현재 위치를 업데이트합니다. 이 메서드는 즉시 반환하고 위치를 찾으면 호출되도록 콜백을 설정합니다. 파란색을 멈추려면 일부 선택기가 특정 지연 후 호출하도록 설정하십시오. – Sandeep

+0

글쎄, 그게 내가 생각했던 것, 1 시간 남겨 놓은 것 외에는 아무런 변화도없이, iOS 6에서 동일한 문제를 시도했지만 시뮬레이터에서 잘 작동한다. – MaxPag

+0

설정에서 응용 프로그램의 위치 업데이트가 비활성화되어 있는지 확인하십시오. 그렇지 않으면 매우 간단해야하며 전혀 코딩 할 필요가 없습니다. 스토리 보드에서지도보기를 드래그하고 사용자 위치 표시 옵션을 선택하면 작업을 수행 할 수 있습니다. – Sandeep

답변

1

네, 아이폰 (안 시뮬레이터)와 가끔 발생, 나는 또한 같은 문제를 경험하고 주어진로지도를 확대하려고하면 그것은 응용 프로그램 충돌 위치. 이 경우를 피하려면 다음 코드를 사용하는 것이 좋습니다. 이렇게하면 유효하지 않은 GPS 업데이트가 삭제되고 결국 유효한 데이터를 가져옵니다.

if (mapView.userLocation.coordinate.latitude <= -180.0f 
    || mapView.userLocation.coordinate.latitude >= 180.0f 
    || mapView.userLocation.coordinate.longitude <= -180.0f 
    || mapView.userLocation.coordinate.longitude >= 180.0f 
    || (mapView.userLocation.coordinate.latitude == 0.0f 
    && mapView.userLocation.coordinate.longitude == 0.0f)) { 

    return; // or something else you may like to do 
} 

// rest of the code