40
Point tapP =
new
Point();
41
projection.toPixels(pt, tapP);
42
Point popP =
new
Point();
43
projection.toPixels(lp.point, popP);
44
int
xMin = popP.x - lp.width / 2 + lp.x;
45
int
yMin = popP.y - lp.height + lp.y;
46
int
xMax = popP.x + lp.width / 2 + lp.x;
47
int
yMax = popP.y + lp.y;
48
if
(tapP.x < xMin || tapP.y < yMin || tapP.x > xMax
49
|| tapP.y > yMax)
50
popupLinear.setVisibility(View.GONE);
51
}
52
return
false
;
53
}
54
55
@Override
56
protected
boolean
onTap(
int
i) {
57
//
点击
Marker 时,该 Marker 滑动到地图中央偏下的位置,并显示 Popup 窗口
58
OverlayItem item = getItem(i);
59
if
(popupView ==
null
) {
60
//
如果
popupView 还没有创建,则构造 popupLinear
61
if
(!createPopupView()){
62
return
true
;
63
}
64
}
65
if
(onTapListener ==
null
)
66
return
true
;
67
popupLinear.setVisibility(View.VISIBLE);
68
onTapListener.onTap(i, popupView);
69
70
popupLinear.measure(0, 0);
71
int
viewWidth = popupLinear.getMeasuredWidth();
72
int
viewHeight = popupLinear.getMeasuredHeight();
73
74
LayoutParams layoutParams =
new
LayoutParams(viewWidth, viewHeight,
75
item.getPoint(), 0, -60, LayoutParams.BOTTOM_CENTER);
76
layoutParams.mode = LayoutParams.MODE_MAP;
77