나는 공격 방법을 모르는 이상한 문제가있어서 전에 비슷한 문제가 있었는지 궁금합니다.ItemizedOverlay가 "부러진"투영으로 그려진 것처럼 보입니다.
ItemizedOverlay 하위 클래스의 그리기 (Canvas canvas, MapView mapView, 부울 그림자) 메소드를 오버라이드하여 항목 사이에 경로, 텍스트 등을 그립니다. 오버라이드에서 제일 먼저하는 일은 모든 매개 변수를 사용하여 super.draw를 호출하는 것입니다. 앱을 시작할 때 오버라이드에 그려지는 선은 원래 있던 곳이지만 super.draw가 그린 실제 OverlayItem은 꺼져 있습니다. 흥미로운 점은지도를 왼쪽 위 모서리 (좌표 0,0)로 이동하면 OverlayItems가 내가 기대하는 위치에 더 가깝고 가까이 갈 수 있다는 것입니다. 실제로 첫 번째 구할 때 완벽하게 일치하는 것처럼 보입니다 점 대 점 (0,0)). OverlayItems가 (0,0) 점에서 멀어 지도록 맵을 이동하면 직선적으로 지리적 위치에서 더 멀어집니다.
누구도이 문제에 직면 해 있지 않으며 분명하지는 않습니다.이 동작을 여전히 여기에 게시하는 최소한의 예제를 만들려고합니다. 실제 코드는 비교적 크기 때문에 문제가 무엇인지 알 수 있다면 많은 노력을 피하고 싶습니다.
편집 : 도움이 될 수있는 정보의 추가 조각 ... 내 그리기 방법은 다음과 같습니다
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
if (!shadow) {
// code for drawing the lines etc.
// on the canvas (uses mapView.getProjection())
}
}
그림자 층이없는 오버레이의 정의 부분은 (내가 사용했습니다 Overlay를 문제없이 확장 할 때 동일한 논리). super.draw로 OverlayItems에 그려지는 그림자 레이어는 실제로 Drawable과 각 특정 항목에 대한 예상 된 Geolocation 사이의 중간에 있습니다.
다음은 avd의 트리 스크린 샷으로 어떤 일이 일어나는지 더 잘 보여줍니다. 네 개의 빨간색 핀은 위의 빨간색 선 위에 있어야하며지도를 왼쪽 상단으로 밀면 실제로 선을 향해 이동해야합니다. 두 개의 핀과 그 사이의 선은 내 사용자 정의 오버라이드에 그려지며 super.draw는 네 개의 그림자와 네 개의 추가 빨간색 핀을 그립니다.
이것은 첫 번째 게시물이기 때문에 하나 이상의 링크를 게시 할 수 없으므로 동일한 jpg에 3 개의 스크린 샷을 모두 넣습니다.
screenshot
1. 그렇습니다. draw 메소드의 첫 번째 요소 중 하나 인 mapView.getProjection()을 호출하고 그 draw 메소드의 지속 시간 동안 반환 된 객체를 사용합니다. 그러나 정확한 값을 사용하지 않는다고 생각하지 않습니다. 슈퍼 드로 (super.draw) 호출의 결과로 예기치 않은 결과가 나옵니다. 2. 예, 모든 OverlayItem에 동일한 기본 드로어 블을 사용 중이며 super (boundCenterBottom (defaultMarker))를 통해 생성자에서 설정 중입니다. –