1

현재 (Google지도) MapView 객체에서 최소 및 최대 위도와 경도를 가져 오려면 다음 코드를 사용하고 있습니다.MapView에서 최소/최대 위도와 경도를 구하는 방법은 무엇입니까?

GeoPoint center = map.getMapCenter(); 
Double minLat = (center.getLatitudeE6() - (map.getLatitudeSpan()/2))/1E6; 
Double minLong = (center.getLongitudeE6() - (map.getLongitudeSpan()/2))/1E6; 
Double maxLat = (center.getLatitudeE6() + (map.getLatitudeSpan()/2))/1E6; 
Double maxLong = (center.getLongitudeE6() + (map.getLongitudeSpan()/2))/1E6; 

불행히도 이것은 올바른 결과를 제공하지 않습니다. 나는 현재 MapView의 줌 레벨 18에서 (52.9476, -1.1452)을 중심으로하고 있습니다. 위의 코드의 출력은 (52.947632, -181.145156, 52.947632, 178.854844)의 값을 각각 제공합니다. 분명히 표시된 최소 위도는 물리적으로 불가능하고 위도는 정확히 중심 위도와 동일하다는 점에서 문제가 있습니다. MapView 자체에서 위치가 올바르게 표시되는지 확인할 수 있습니다.

왜 이런 일이 일어 났는지 설명 할 수 있습니까? 내가 본이 이슈에 대한 모든 해결책 중에서, 이것은 사람들이 행운을 갖고있는 것으로 보이는 유일한 것이고 여전히 효과가 없다!

답변

1

이제이 문제를 직접 해결했습니다. 기본적으로 MapView 프로젝션이 준비되기 전에 위 함수는 각각 0과 360 * 1E6을 위도와 경도로 반환합니다. 따라서 AsyncTask에서 수행해야하는 모든 작업은 준비 될 때까지 이러한 값에 대한 검사를 수행합니다.