2017-07-19 10 views
0

私はこれで見つけ出すことのできるすべてを見てきましたが、解決策が見つかりませんでした。私は非常に簡単なことをしようとしています:Android Google Map move camera does not work

protected void moveCamera(final LatLng position, final float zoom) { 
    getMap(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(final GoogleMap googleMap) { 

      logger.debug("Moving map to " + position); 
      CameraPosition cameraPosition = new CameraPosition.Builder() 
        .target(position) 
        .zoom(zoom) 
        .build(); 
      googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

     } 
    }); 
} 

何も起こりません。エラーもカメラの動きもありません。私もmoveCameraを試しました。私はCameraUpdateFactoryへのさまざまな種類の呼び出しを試しました。私は別々に移動してズームしようとしましたが、遅れてHandlerで投稿しようとしました。時にはこれは完璧に動作しますが、フラグメントをマップに残して戻ってくると動作しません。地図は緯度0,0と標準地図タイプ(ハイブリッドに設定されています)にリセットされ、何もすることができません。私はメソッドがロギングステートメントによって呼び出されることを知っています。マップを復元できることを確認するために必要なライフサイクルの種類はありますか?

Mapboxなどに切り替えることを好まないのは、小さなバグを修正するために多くの作業が必要になるためですが、正しく動作させるためにはこれが必要です。

答えて

0

私は次のように使用してきましたし、それが正常に動作します:

GoogleMap mGoogleMap; 

LatLngBounds bounds = builder.build(); 
int width = getResources().getDisplayMetrics().widthPixels; 
int height = getResources().getDisplayMetrics().heightPixels; 
height = Math.round(0.45f*height); 
int padding = (int) (width * 0.10); 


CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds,width,height,padding); 

// Add this where you want to move map camera 
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng("<pass_LatLng_here")); 
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(14)); //set the zoom level here 
+0

なぜあなたはそれを使用しないで、次に 'CameraUpdate'を作成していますか? – nasch

+0

'moveCamera'と' animateCamera'パーツだけを使用すると、何もしません。 'LatLngBounds bounds = LatLngBounds.builder()。build()'(あなたのコードスニペットで 'builder'が定義されていないので、あなたが行っていたと仮定します)は、このエラーを生成します:' java.lang.IllegalStateException: ' – nasch