2014-02-26 2 views
0

질문이 있으십니까? 현재 속도에 따라 줌 레벨을 어떻게 설정할 수 있습니까? 예를 들어 느리게 이동할 때. 빨리 확대 할 때 가까운 곳으로 확대/축소합니다.Android MapView 동적으로 줌 레벨을 설정했습니다.

private int calculateZoomLevelBySpeed(float speed) { 
    int zoomLevelMax = mapView.getMaxZoomLevel(); 
    // default 
    int zoomLevel = (zoomLevelMax > 0) ? (int)zoomLevelMax/2 : 4; 

    if (speed > 0) { 
     // 300km theoretically max/max zoom steps 
     double step = 300/zoomLevelMax; 
     zoomLevel = (int) Math.round(speed/step); 
     // reverse 
     zoomLevel = zoomLevelMax - zoomLevel; 
     zoomLevel = Math.min(zoomLevelMax, zoomLevelMax); 
     zoomLevel = Math.max(zoomLevelMax, 1); 
    } 
    return zoomLevel; 
} 

이 작동하지 않습니다, 나는 그 방법을 수행 할 수 있습니다 여기에

내 알고리즘?

미리 감사드립니다.

+0

안녕 라즐로, 당신이 게시 한 코드는 줌을 계산하는 것입니다 레벨 또는 줌 레벨을 설정 하시겠습니까? – Vijju

+0

'zoomLevel = Math.min (zoomLevelMax, zoomLevelMax);'? – cosmincalistru

+0

어쩌면 이것이 문제 였고, 고정 된 코드로 시도 할 것입니다. zoomLevel = Math.min (zoomLevel, zoomLevelMax); – Laszlo

답변

-1

정말 그것을 테스트하지 않았다, 이것을 시도,하지만 난 그게

private int calculateZoomLevelBySpeed(float speed) 
{ 
    //assuming this line returns the max zoom level on maps 
    int zoomLevelMax = mapView.getMaxZoomLevel(); 
    // default 
    int zoomLevel = (zoomLevelMax > 0) ? (int)zoomLevelMax/2 : 4; 

    if (speed > 0) { 
     // 300km theoretically max/max zoom steps 
     double step = (speed/300) * zoomLevelMax; 
    } 
    return Math.Round(zoomLevel); 
} 
+0

이 코드에서 단계의 영향을받지 않는 zoomLevel은 zoomLevel을 수정할 수있는 step으로 어떤 작업도하지 않습니다 – Laszlo

-1

이처럼 시도 도움이되기를 바랍니다 :

private int calculateZoomLevelBySpeed(float speed) { 
    int zoomLevelMax = mapView.getMaxZoomLevel(); 

    if (speed > 0) { 
     // 300km theoretically max/max zoom steps 
     double step = 300/zoomLevelMax; 
     zoomLevel = (int) Math.round(speed/step); 
     // reverse 
     zoomLevel = zoomLevelMax - zoomLevel; 
    } 
    return zoomLevel; 
} 
관련 문제