Android Google Maps v2-myLocationのズームレベルを設定する


105

新しいGoogle Maps API v2でmyLocationのズームレベルを変更することはできますか?

を設定GoogleMap.setEnableMyLocation(true);すると、地図上にボタンが表示され、現在地を確認できます。

それをクリックすると、地図があなたの場所にあなたを連れて行き、あるレベルにズームインします。このズームを小さくしたり、大きくしたりできますか?


1
mylocationボタンのズームレベルについて何か知っていますか。その価値が欲しい。
Prashanth Debbadwar

回答:


211

デフォルトのmyLocationマーカーを使用して、クリックで変更できるかどうかは疑問です。ただし、アプリが見つかったら、その場所を自動的にズームインすることをアプリに希望する場合は、この質問に対する私の答えを確認します

私が提供した答えはズームインしないことに注意してください。ただし、onLocationChangedメソッドを以下のように変更すると、好きなズームレベルを選択できます。

@Override
public void onLocationChanged(Location location) 
{
    if( mListener != null )
    {
        mListener.onLocationChanged( location );

        //Move the camera to the user's location and zoom in!
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 12.0f));
    }
}

146

次のものも使用できます。

mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );    

ズーム値を最小値= 2.0から最大値= 21.0の間の任意の値に変更するだけです。

APIは、すべての場所に最大ズームまたは最大ズームに近い値のタイルがあるわけではないことを警告します。

で使用できるズーム方法の詳細については、こちらを参照してくださいCameraUpdateFactory


1
デフォルトのズームレベルはいくつですか?
IgorGanapolsky 2015

14がデフォルトのズームレベル
vin shaba

25

場所付き-新しいGoogleMaps SDK:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));

2
他の多くの回答が参照しているnewLatLngZoom()とzoom()の間に違いはありますか?アプリでは、エンドユーザーの観点から、これらは同じに見えます。
ポートフォリオ

15

現在のズームレベルに対して相対的にズームを変更するHeatfanJohnのソリューションとは少し異なるソリューション:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));

15

ここにあるおおよそのズームレベルと、彼らは何をすべきか:

1: World
5: Landmass/continent
10: City
15: Streets
20: Buildings

たとえば、次のようにしてストリートレベルにズームできます(下の "15f"はストリートレベルです)。

 override fun onMapReady(googleMap: GoogleMap?) {
    googleMap?.mapType = GoogleMap.MAP_TYPE_NORMAL
    googleMap?.addMarker(MarkerOptions()
            .position(LatLng(37.4233438, -122.0728817))
            .title("cool place")

            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE)))

    googleMap?.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(37.4233438, -122.0728817), 15f))

注:わかりやすいように、場所によって最大ズームレベルが異なる場合があります。googleMap.maxZoomLevel最大または最小ズームレベルを取得する場合に使用してみてください。


12

onMapReady()メソッド内

zoomLevelを任意の値に変更します。

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));

2

maps_activity.xmlに1行だけ書く必要があります

map:cameraZoom="13"

これがあなたの問題を解決することを願っています...


2

使用できます

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);

1

最近でも同じクエリがありました....上記のsetmaxzoomまたはmap:cameraZoom = "13"のどれも機能しなかったため、使用した依存関係が古いことがわかりました。Googleマップの依存関係を確認してくださいこれは正しいこれは最新の使用法です

compile 'com.google.android.gms:play-services:11.8.0' 

1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); これはアニメーション効果がありません。


0
Location locaton;
double latitude = location.getlatitude;
double longitude = location.getlongitude;

ズームを保存するか、常に取得する場合は、次を呼び出すだけです。

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);

0

上記の回答のほとんどは廃止されているか、現在の緯度と経度を保持することでズームが機能し、希望する正確な場所にズームしません。次のコードをonMapReady()メソッドに追加します。

@Override
public void onMapReady(GoogleMap googleMap) {
    //Set marker on the map
    googleMap.addMarker(new MarkerOptions().position(new LatLng(0.0000, 0.0000)).title("Marker"));
    //Create a CameraUpdate variable to store the intended location and zoom of the camera
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(0.0000, 0.0000), 13);
    //Animate the zoom using the animateCamera() method
    googleMap.animateCamera(cameraUpdate);
}

0

「mMap.animateCamera(CameraUpdateFactory.zoomTo(17.0f));」で試しました しかし、それは私にはうまくいきませんでした。だから私は最初にズームインするためにこのアニメーションを使いました。

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.