5

Android用のGoogleマップで奇妙な問題が発生しています。

すべて正常に動作していますが、ユーザーがマップでアクティビティを開始すると、指定された場所にズームインしてカメラを配置したいと考えています。

これは私のコードです:

    LatLng l = new LatLng(40.446951,-3.693295);
    defaultPos = mapa.addMarker(new MarkerOptions().position(new LatLng(l.latitude, l.longitude)).icon(BitmapDescriptorFactory.defaultMarker((float) 250.0)));
    Log.d("mappoi","zoom to");
    mapa.animateCamera(CameraUpdateFactory.zoomTo(17.0f));
    mapa.animateCamera(CameraUpdateFactory.newLatLng(l));

ご覧のとおり、新しい LatLng オブジェクトを作成し、それを使用して地図上にマーカーを作成した後、その位置にカメラの中心を合わせてズームインしたいと考えています。

理由はわかりませんが、ズームは最初に実行されたときにのみ機能するため、アプリを新しくインストールすると正常に機能しますが、戻ってアクティビティを再起動すると、ズームは行われず、デフォルトのズームレベルが維持されます。アプリを閉じて再起動しても機能しなくなり、アンインストールして再インストールした場合にのみ機能しますが、一度だけです。

何がうまくいかないのか想像できません。最初に機能する場合、次はなぜ機能しないのですか?

助けてくれてありがとう。

編集:戻るボタンを押すとアクティビティが強制終了されるため、毎回 onCreate が呼び出されます。

4

3 に答える 3

6

私に指摘してくれたgnuanuコメントに感謝します:

Google Maps Android API v2でカメラを現在の場所に直接移動するには?

解決策は次を使用することでした:

CameraUpdateFactory.newLatLngZoom()

それ以外の

CameraUpdateFactory.zoomTo()
CameraUpdateFactory.newLatLng()

newLatLng がズーム レベルを変更していた可能性があります。

于 2013-10-03T08:40:50.630 に答える
0

あなたの質問からは、あなたのアクティビティで上記のコードを実行する場所が明確ではありません。関数からコードを実行していると思いますonCreate()。その場合、「戻る」ボタンを押してアプリを終了するのではなく、アプリを強制終了してから再度起動し、動作するかどうかを確認してください。

または、アクティビティを起動するたびにマップを拡大する必要がある場合は、コードをonResume()アクティビティの関数に移動します。

于 2013-10-03T08:09:01.957 に答える
-1

コード (マップを操作するすべてのコード) をアクティビティの onResume() メソッドに移動する必要があります。その後、正常に動作します。

于 2013-10-03T08:01:07.737 に答える