MapView 애플리케이션에서 내 위치 수신기에 문제가 있습니다. 특히 시간에 문제가있어서 실제 위치가지도에 그려집니다.Android : Mapview의 위치 업데이트가 오래 걸립니다. 위치가 정확합니다.
MapView에 두 개의 수신기가 연결되었습니다. 첫 번째는 네트워크 신호를 기다리고 두 번째 신호는 GPS 신호를 기다립니다. 리스너 구현의 시작 부분에서 다른 제공자가 위치를 검색하는 동안 시간을 줄이기 위해 마지막으로 알려진 위치를 얻습니다.
다음과 같이지도보기 나의 LocationListner가 호출:
public void locationManager(){
mLocationUpdateHandlerGPS = new LocationUpdateHandler();
mLocationUpdateHandlerNetwork = new LocationUpdateHandler();
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//-------Check if Network is available-----
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocationUpdateHandlerNetwork);
//-------Check if GPS is available---------
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, mLocationUpdateHandlerGPS);
}
내가 리스너는 다음과 같습니다 구현 된 LocationUpdateHandler.class :지도 내가 로그 출력을 확인 시작되면
public class LocationUpdateHandler implements LocationListener {
@Override
public void onLocationChanged(Location location) {
location = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
int lat = (int) (location.getLatitude() * 1E6);
int lng = (int) (location.getLongitude() * 1E6);
//Log Actual Position
Log.v(TAG, "Actual Postion // Get Latitude: " + lat);
Log.v(TAG, "Actual Postion // Get Longitude: " + lng);
mMyLocationOverlay.enableMyLocation();
Log.v(TAG, "Enable Location returns: "+mMyLocationOverlay.enableMyLocation());
mMyLocationOverlay.runOnFirstFix(new Runnable() {
@Override
public void run() {
mMapView.getController().animateTo(
mMyLocationOverlay.getMyLocation());
}
});
}
}
을 DDMS에서 위치 정보가 도착 시간임을 알 수 있습니다.
08-29 14:50:16.136: VERBOSE/GeoTagMapActivity(7300): Running Activity GeoTagMapActivity
08-29 14:50:20.691: VERBOSE/GeoTagMapActivity(7300): Enable Location returns: true
08-29 14:50:20.691: VERBOSE/GeoTagMapActivity(7300): Actual Postion // Get Latitude: *******
08-29 14:50:20.691: VERBOSE/GeoTagMapActivity(7300): Actual Postion // Get Longitude: *******
그럼에도 불구하고 위치가지도에 표시 될 때까지 2 ~ 5 분 정도 걸립니다.
어디서 문제가 있는지 잘 모릅니다. 도움 주셔서 감사합니다.
이 질문에 대한 답변을하지 못할 수도 있지만 실제로 [실제] 수정을받는 데 몇 분이 걸리는 경우가 있습니다. 가장 최근에 나온 앱은 GPS를 사용하고 있으며, 내가 시작한 시점을 알기 때문에 좌절감을 느낍니다. 최근에 픽스를 얻지 못하면 몇 분이 걸릴 것입니다. – Jack
mMyLocationOverlay.runOnFirstFix (새의 Runnable() { @Override 공공 무효 실행() { mMapView.getController() animateTo ( mMyLocationOverlay.getMyLocation());. } }); 이 대신에. mMapView.getController()를 작성하십시오. animateTo ( mMyLocationOverlay.getMyLocation()); 시도 해봐. – user370305
안녕하세요 @ 잭 감사합니다. 하지만 지금은 좀 혼란 스럽습니다. 로그 파일에서 볼 수 있듯이 앱이 위치를 잡을 때까지 4 초 밖에 걸리지 않습니다. – Chris