문제

가능한 가장 짧은 시간 안에 장치의 가장 정확한 위치를 결정하려고합니다.

데이터를 GeoPoint로 저장하고 있으며 MapView에 표시됩니다.

마지막으로 장치에서 GPS를 활성화하고 위치 잠금 장치를 얻도록했을 때, 나는 현재 위치에서 약 80 마일이었습니다.

위치 관리자 설정과 위치 청취자가 있습니다.

내가 이것을하면, 나는 null을 얻는다.

  myLocOverlay = new MyLocationOverlay(this, mapView);
  GeoPoint test = myLocOverlay.getMyLocation();

그러나 다음 몇 줄에서;

  myLocOverlay.enableMyLocation();      
  mapView.getOverlays().add(myLocOverlay);

이를 통해지도의 오버레이는 현재 위치를 보여줍니다. 그것은 네트워크 제공 업체를 사용하고 있지만 GPS 수정을 얻으려고 시도하고 있습니다 (실내에있을 수없고 최상층 근처의 위치가 없음).

내가 이와 같이 지오 포인트를 구성한다면;

    if(lm.getLastKnownLocation("gps") != null) 
    {
     test = new GeoPoint(
        (int) (lm.getLastKnownLocation("gps").getLatitude() * 1E6), 
        (int) (lm.getLastKnownLocation("gps").getLongitude() * 1E6));
    }

    else
    {

    if(lm.getLastKnownLocation("network") != null) 
    {
     test = new GeoPoint(
       (int) (lm.getLastKnownLocation("network").getLatitude() * 1E6), 
       (int) (lm.getLastKnownLocation("network").getLongitude() * 1E6));
    }
    //bad things
    }

그런 다음 혼란스러운 결과를 얻습니다. 장치 GPS 제공 업체를 비활성화하면 코드가 네트워크 제공 업체로 이동하여 상당히 정확한 결과를 제공합니다. GPS 제공 업체를 활성화하면 GeoPoint가 마지막으로 GPS 잠금 장치를 얻을 수있는 마지막 장소로 돌아옵니다.

위의 결과를 피하고 싶고 사용을보고 싶었습니다.

GeoPoint test = myLocOverlay.getMyLocation();

그러나 위에서 말했듯이, 나는 그로부터 널을 얻습니다.

GPS와 네트워크 모두에서 지오 포인트를 얻은 다음 비교하고 네트워크 위치에서 1 마일 떨어진 경우 GPS 결과를 무시하지 않습니다. 약간 붙어 있습니다. getMylocation ()가 작동하지 않는 이유는 무엇입니까?

도움이 되었습니까?

해결책

아직 수정을 얻지 못했기 때문에 NULL을 반환 할 수 있습니다. 등록해야합니다 LocationListener 네트워크와 GPS 소스 모두에서 업데이트를 수락합니다. 그런 다음 위치 업데이트를 받으면 위치의 정확도를보고 사용하고 싶은지 결정할 수 있습니다.

다른 팁

나는 당신이 Geo Point를 너무 빨리 요구하고 있다고 생각합니다. MyLocationOverlay는 자체 청취자를 사용하여 수정을 검색합니다. 그리고 아마도 그게 나이를 보는 GPS 수정을 요구하고있을 것입니다. 그렇다면 네트워크 수정을 획득하고 GPS 수정을 기다리는 동안이를 사용하는 경우 너무 오래된 경우.

이것은 GPS 칩셋 및 GSM 모뎀 및 백그라운드에서 웹 백엔드와 대화하는 것을 의미합니다.
프로그램이 다음 줄로 이동 해야하는 시간에는 불가능합니다.

UI에서는 즉각적으로 보일 것이지만 인간의 눈으로 측정됩니다.

Caseyb의 답변과 함께 가서 자신의 GPS 리스너를 두 제공 업체 모두에 등록하고 사용하려는 쿨리 네이트를 직접 결정할 수 있습니다. 이 작업을 수행하려면 마지막 수정 시간 (location.gettime ())의 시간과 위치의 정확도를 얻는 방법이 있습니다.

두 번째 가능성은 조금 기다리고 전화가 여전히 널을 반환하는 경우 조금 더 기다리는 것입니다.

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