구글 맵에 버튼이있는 InfoWindow를 가지고 있는데, chose007의 해킹을 시도해 볼 수있는 변형을 시도하고 있습니다 (이 question 참조).지도의 InfoWindow보기의 화면 좌표를 얻는 방법
내 접근 방식은 InfoWindow 내부 버튼의 화면 좌표를 가져와 onDispatchTouchEvent
함수로 조작하는 것에 의존합니다.
그러나 화면 좌표를 가져 오는 모든 시도가 실패합니다. 즉, 내가 만든 후 onDispatchTouchEvent
(즉, 만든 후) 호출하고 있지만 버튼과보기 모두에 대해 0,0을 얻습니다.
InfoWindow가 특별한 경우이고 실제 UI 요소가 아니기 때문에 이것이라고 가정합니다. (IIRC 전체보기는 기본적으로지도 상단에 블 리트되는 비트 맵입니다.) 좌표를 가져올 방법이 있습니까? 나는 chose007의 해결책처럼 매직 넘버를 포함하는 것을 피하려고 노력하고 있다고 언급해야합니다. 여기
내가 뭘하는지의 단순화 된 그림이다 : 그건 당신이 버튼이 정말 정의 정보창을 만들기 위해 사용되어야 하는지를 아니기 때문에public boolean onDispatchTouchEvent(MotionEvent ev) {
int[] location = new int[2];
mTestButton.getLocationOnScreen(location); // Returns 0,0
mTestView.getLocationOnScreen(location); // Returns 0,0
return false;
}
public View getInfoContents(Marker marker) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mTestView = inflater.inflate(R.layout.info_window, null);
mTestButton = ((Button) mTestView.findViewById(R.id.test_button));
}
정보창이 그려진 스냅 샷이고 '보기'계층의 일부가 아니라는 가정하에 올바른 것입니다.위치 지정을 얻는 유일한 방법은 chose007의 답변에서 "마커 숫자"를 사용하는 것입니다.이 방법은 기본 앵커 및 회전을 가정하고 '마커'위치와 정보창 크기로 계산합니다. 또한 사용자 지정 앵커 및 회전을 허용하는 일반 [구현] (https://gist.github.com/corsair992/8313269)을 파생 시켰으며 정보창을 터치 리스너를 통해 해킹하지 않고도 라이브로 만들었습니다. 대답에 대한 의견에 – corsair992
마커 좌표에 앵커 된 자신 만의'PopupWindow' 디스플레이를 시도하십시오. –