Android Google지도 v2-myLocation의 확대 / 축소 수준 설정


105

새로운 Google Maps API v2를 사용하여 myLocation의 확대 / 축소 수준을 변경할 수 있습니까?

을 설정 GoogleMap.setEnableMyLocation(true);하면지도에 위치를 찾을 수있는 버튼이 표시됩니다.

클릭하면지도가 사용자의 위치로 이동하여 일정 수준으로 확대됩니다. 이 확대 / 축소를 더 작게 또는 더 크게 변경할 수 있습니까?


1
내 위치 버튼 확대 / 축소 수준에 대해 알고 있습니까? 나는 그 가치를 원한다.
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 () 사이에 차이점이 있습니까? 최종 사용자의 관점에서 보면 앱에서는 동일하게 보입니다.
Portfoliobuilder

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에 한 줄만 작성하면됩니다.

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.