2016-10-29 9 views
1

私はアンドロイドアプリでGoogleマップを使用しています。すべては問題ありませんが、GPSサービスが有効になっていないときは、有効にするsnackbarメッセージを表示します。私はGPSを有効にして、私の場所のボタンを押したときにのみ私の場所に自動的に戻る私の断片マップderのdosen'tに戻ります。GoogleマップonResume

更新メソッドでスレッドを使用して問題を解決しようとしましたが、何もしませんでした。かわった。ときどき動作しますが、時には十分ではありません。

私のonCreate:

public void init(){ 
    gps = new GPSTracker(); 
    gps.init(mActivity,mActivity); 
    if (!gps.canGetLocation()) { 
     gps.showSettingsAlert(mActivity,rootView); 
    }else { 
     initMap(); 
    } 

私initMap

private void initMap(){ 
    try { 
     MapsInitializer.initialize(mActivity.getApplicationContext()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    mMapView.getMapAsync(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(GoogleMap mMap) { 
      googleMap = mMap; 
      if (ActivityCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
       googleMap.setMyLocationEnabled(true); 
      } 
      moveSearchCircle(new LatLng(gps.getLatitude(), gps.getLongitude())); 
      updateMapPosition(); 
      googleMap.setIndoorEnabled(true); 
      addMarker(); 
     } 
    }); 
} 

updateMapPosition

private void updateMapPosition(){ 
     googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(gps.getLatitude(), gps.getLongitude()), 15)); 
    } 

onResume

@Override 
public void onResume() { 
    super.onResume(); 
    init(); 
} 

enter image description here

答えて

1

gps.getLatitude(), gps.getLongitude()はゼロの値を返し、地図のカメラがこの場所に設定しようとしていることを示します。 通常、デバイスの取得操作には時間がかかるため、これを非同期で実行する必要があります。 したがって、GPSTrackerクラスをチェックし、非同期メソッドを見つけるか、this tutorialを参照してください。

+0

私はチュートリアルに続き、これまでどおりすべてが正常に動作します – Fesco

+0

正しい答えを忘れないでください –