2012-03-10 20 views
0

私のアプリにはタイトルアクティビティと、主にGoogleマップ画面である子アクティビティが含まれています。地図の中心点が正しくありません

私は最近、アプリユーザーが地図をユーザーの場所に集中させるオプションを追加しました(ドロイドデバイスGPSなどを使用して)。

これが選択され、選択されていない場合、正しい位置に中心を置き、数秒以内に物理的な場所に変更されるという問題があります。

どうすればこのようなことが起こらないようにすることができますか?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60L, (float) 100.0, onLocationChange); 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60L, (float) 100.0, onLocationChange); 
    provider = locationManager.getBestProvider(criteria, false); 
    location = locationManager.getLastKnownLocation(provider); 

    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    location = locationManager.getLastKnownLocation(provider); 
} 

public void onStop() { 
    super.onStop(); 
    locationManager.removeUpdates(onLocationChange); 
    if (timer != null) { 
     timer.cancel(); 
    } 
} 

@Override 
public void onRestart() { 
    super.onRestart(); 
    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    ... 
    location = locationManager.getLastKnownLocation(provider); 
} 

答えて

0

私は自分の最悪の敵のように見えます。

問題は、私はこの問題を修正する修正プログラムをユーザーが中心とその場所にズームしたいかどうかをテストするためにいくつかのロジックを追加するだけだった

LocationListener onLocationChange=new LocationListener() { 
    public void onLocationChanged(Location location) { 
     setMapCentre(location.getLatitude(), location.getLongitude()); 
     map.getController().setZoom(13 + zoomModifier); 

    } 

に場所を設定していることです。

LocationListener onLocationChange=new LocationListener() { 
    public void onLocationChanged(Location location) { 
     if (zoomtown.equals(" zoomme")) { 
      setMapCentre(location.getLatitude(), location.getLongitude()); 
      map.getController().setZoom(13 + zoomModifier); 
     } 
    } 
関連する問題