2012-11-27 6 views
-2

내가 지금 몇 시간 동안 구글지도 API (10)와 함께 일하고 버그 난 그냥 질수 수정 메신저 99.9 % 확신 때문에 구글 내에서 도서관이 있습니다.는 프로젝션 매핑

나는 물건을 그릴 프로젝션 .toPixels()을 많이 할 모든 잘 작동합니다. 나는 사용자 정의 확대/축소 방법 mapController.setZoom(getZoom() +1)으로 확대/축소하고 핀치 확대 (2 손가락 확대/축소)를 사용하지 않는 한 모두 작동합니다. 그 후, 프로젝션은 특정 확대/축소 수준 내에서 멈춘 것처럼 보입니다. 내가 12에서 11로 줌을 꼬집어 경우

은지도 getZoomLevel() 11 (항상 적절한 수준을보고) 나에게 준다. 이제 내 zoomOut 메서드를 사용하면 레벨 13에 있고 프로젝션은 레벨 13에 대해 모든 권리를 계산하지만 모든 후속 zoomOut은 맵 줌 레벨 만 변경합니다 (내부적으로 장치에는 인터넷이 없으므로 맵 데이터가 없습니다). 투영법은 마치 여전히 줌 레벨 13 인 것처럼 모든 것을 계속 계산합니다!
지도의 실제 수준이 무엇이든간에 투영이 갑자기 수준 11으로 이동합니다. 그래서 12 핀치 확대했을 경우 투영 11/13에 갇혀 있고 내가 축소/인치 경우에만 그 두 사이에 점프합니다.
다시 핀치 줌을 사용하면 프로젝션은 업데이트되지만 핀치 확대 된 새로운 레벨로 다시 고정됩니다.

그래서 인터넷없이 핀치 줌은 완전히 투사를 죽이고 전체지도 (난 정말 해달라고 시각적 인지도를 필요로 내 경우에는, 난 그냥 그 GeoPoint의 번역이 필요합니다, 가장 중요한 부분을 먹으 렴) 쓸모가된다.

사람은에 터치 이상 1 포인터를 사용하지 않도록하는 것보다 나에게 다른 사람을 도울 수있는 핫픽스/해결 방법이나 아무것도 알고 있나요
? 나는 사용자 정의 버튼으로 확대하는 방법을 내 customMapView의 생성자에서

지도 물건

setVisibility(View.VISIBLE); 

    mapController = getController(); 

    mapController.setZoom(17); 

    setBuiltInZoomControls(false); 
    getZoomButtonsController().setVisible(false); 

    setSatellite(false); 
    setTraffic(false); 
    setClickable(true); 
    preLoad(); 


가와)

mapController.setZoom(getZoomLevel() + 1); // zoom in 
mapController.setZoom(getZoomLevel() - 1); // zoom out 


1) 줌 버튼을
2 일 이잖아 핀치 축소



추가 정보 전술 한 바와 같이 51,515,3)를 통해 현재 버튼의 버튼/줌 동작을 보여준다
는 그냥 앱 '운동 기록 "및"토크 "를 사용했다.
둘 다 googlemaps를 사용합니다.
나는 둘 다 트랙을 녹음했다.
지금 만약 내가 인터넷을 사용하지 않도록 설정하고 두 손가락 줌을 사용하고 일반적인 버튼 점에서 줌 인/아웃 후, 어떤 점에서 트랙은 완벽하게 중심을 경우에도 어떤 방향으로 방황. 많은 줌 아웃/아웃 후에 트랙이 사라지는 지점까지.
두 번째는 인터넷을 다시 활성화하고지도에서 일부 타일을로드 할 수 있고 다음 확대/축소가 작동하며 모두 괜찮습니다 ... 인터넷에서 프로젝션 내에서 무언가를 계산할 데이터가 필요하기 때문에 보이는 것처럼 보입니다. 2 손가락 줌에 의해 제공됩니다 ... 그게 내가 어떻게 볼 수 있습니다.

3 개 앱은 모두 같은 문제는 ...

답변

0

귀하의 질문은 꽤 혼란하고 다시 단어한다 그것을.

하지만 적어도 인터넷에 연결되지 않는 기기에서 MapView을 사용 중이며지도 확대/축소 수준과 영사를 동기화하는 데 문제가 있다는 것을 이해했습니다.

문제는 Google지도에 없으므로 코드에서 문제를 찾아야합니다.

getZoomLevel()Projection 간의 동기화를 달성하는 가장 일반적인 에러는지도 이미지 프로젝션에 값을 취할 수있는 상태가 종종 첫 번째 정수 값 (이/증가 1 단계 씩 배수 감소) 인 것을 잊고이다 그 (것)들 사이에서 사용자에게 매끄러운 급상승 in/out를 제공하기 위하여.

예를 들어 손가락을 화면에 유지하고지도 크기 (및 예상치)를 변경하는 동안 확대/축소를 사용하면 getZoomLevel() 메서드는 핀치 - 확대를 시작할 때지도가 갖는 줌 레벨을 항상 반환합니다 . 핀치를 멈추고 (화면에서 손가락을 떼면) getZoomLevel() 메서드는 최종 선택 줌 레벨을 반환합니다. 그러나 여기에서 끝나지 않으면 애니메이션이 계속되어 가장 근접한 정수 줌 레벨 (확대를 위해 집게를 멈춘 후 getZoomLevel()에 의해 반환 된 것)으로 확대/축소됩니다.

당신이 이해했으면합니다. 문제를 예시하는 코드 예제를 게시하지 않으면 문제를 해결하는 데 도움을 얻을 수 있습니다.

감사합니다.

+0

죄송합니다. 문제는 내가 할 수있는 한 명확하게 설명해주었습니다./그러나 설명하는 것과는 아무런 관련이 없습니다. 임씨는 거의 2 년 동안지도 작업을하고 있습니다. 간단하지는 않지만 문제는 도서관 안쪽 깊숙이 묻혀 있습니다. – NikkyD

+0

거의 2 년 동안 Google지도에서 일하고 있습니다 .--) 내 답변을 게시하기 전에 테스트를 거쳤습니다. 내 프로그램 중 하나가 네트워크에서 연결이 끊어진 장치에 10.000 포인트의 경로를 표시합니다. 줌을 제대로 처리하지 못했습니다. 확대/축소 (줌 인/아웃) 및 줌 버튼 (그리고 자동 줌 확대)을 시도해 보았습니다. 모두 잘 작동했습니다. 앞서 설명한 내용을주의 깊게 읽고 더 많은 테스트를하고 (로그 수준을 표시하는 로그 메시지 사용) 문제를 좁힐 수 있습니다. – Luis

+0

원한다면 문제가있는 예제 코드를 게시하면 확인하겠습니다. 감사합니다 – Luis