답변

35

of OnCameraChangeListener 구현을 만들고 to setOnCameraChangeListener() of your GoogleMap 인스턴스를 전달하십시오. 사용자가 줌, 중앙 또는 기울기를 변경할 때마다 청취자는 onCameraChange()으로 호출되어야합니다. 전달 된 CameraPosition 개체에서 새 확대/축소 수준을 확인할 수 있습니다.

이전 줌 레벨을 추적하는 인스턴스 변수를 정의 :

+8

setOnCameraChangeListener 지금은 탐지 만 구글지도에 onDoubleTap 확대 할 경우 어떻게 – Makalele

+0

@CommonsWare을되지 않습니다? –

+0

@NirmalPrajapat : 잘 모르겠다. 미안하다. – CommonsWare

46

하면 줌 레벨이 여기 내가 좋을 것 무엇을, 이전의 줌 레벨에서 변경되었는지 확인하는 방법을 찾고 있다면

지도가 확대되는 경우에도
//Initialize to a non-valid zoom value 
private float previousZoomLevel = -1.0f; 

, 당신이 알려 인스턴스 변수를 정의 :

private boolean isZooming = false; 

당신이 설정하여 GoogleMap으로 인스턴스가, 그것을 제공 OnCameraC hangeListener ... 이제

//mMap is an instance of GoogleMap 
mMap.setOnCameraChangeListener(getCameraChangeListener()); 

, 줌 레벨이 변경하는지 확인할 수있는 OnCameraChangeListener 정의 : 이제

public OnCameraChangeListener getCameraChangeListener() 
{ 
    return new OnCameraChangeListener() 
    { 
     @Override 
     public void onCameraChange(CameraPosition position) 
     { 
      Log.d("Zoom", "Zoom: " + position.zoom); 

      if(previousZoomLevel != position.zoom) 
      { 
       isZooming = true; 
      } 

      previousZoomLevel = position.zoom; 
     } 
    }; 
} 

, 당신은 당신이 줌 레벨을 변경하는 경우 알고 isZooming의 값을 확인 할 수 있습니다 .

하면지도가 확대되는 경우 알고에 의존하는 어떤 작업을 완료 한 후 확인

isZooming = false; 

을 설정합니다.

+1

끌기 수신기로도 완벽하게 작동합니다. 마커를 필터링하기 위해 찾고 있던 것이지도 중심까지 보이는 거리입니다. 감사! –

+0

지금은 사용되지 않습니다. –

18

이전 답변은 OnCameraChangeListener이고 이는 deprecated이므로이 대답은 카메라 setOnCameraMoveListener을 기반으로합니다.

이 예에서는 사용자가 줌을 변경하면 (컨트롤 또는 손가락 및 확대/축소를 사용하여) 내 Map Type을 변경하려고합니다. zoom level이 18.0 이상으로 변경되면지도 유형이 MAP_TYPE_HYBRIB으로 변경되고 18.0 미만으로 변경되면지도 유형이 MAP_TYPE_NORMAL으로 변경됩니다.

googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { 
    @Override 
    public void onCameraMove() { 
     CameraPosition cameraPosition = googleMap.getCameraPosition(); 
     if(cameraPosition.zoom > 18.0) { 
      googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     } else { 
      googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     } 
    } 
}); 
+0

니스! OnCameraChangeListener보다 훨씬 깔끔합니다. 지도 유형을 변경하는 재미있는 아이디어. –

+0

참고 : 각 줌 이벤트에 대해이 콜백이 몇 번 트리거됩니다. –

+0

@SomeoneSomewhere 예, 그렇습니다. 사용자가 확대하는 동안 줌의 각 "위상"에 트리거가 생깁니다. 확대/축소가 느릴수록 청취자가 트리거되는 횟수가 늘어납니다. 확대/축소가 빠를수록 트리거하는 시간이 줄어 듭니다. –