我有一个带谷歌地图的屏幕,在屏幕上方有一个用于搜索位置的自动文本视图,并制作一个自定义信息窗口以显示更多详细信息,问题是当用户点击任何标记自定义窗口弹出窗口作为其默认行为时(屏幕中心),所以它混合了autotextview,我可以在屏幕上更改信息窗口位置,即底部或类似的东西。
答案 0 :(得分:5)
如果你想在弹出的谷歌地图屏幕上调整标记位置完美中心,那么请使用下面的代码,我已经获得弹出高度并基于该更新y轴。我希望它能帮到你强> 的
public boolean onMarkerClick(Marker marker) {
//Please use fix height popup
float container_height = getResources().getDimension(R.dimen.DIP_300);
Projection projection = mGoogleMap.getProjection();
Point markerScreenPosition = projection.toScreenLocation(marker.getPosition());
Point pointHalfScreenAbove = new Point(markerScreenPosition.x,(int) (markerScreenPosition.y - (container_height / 2)));
LatLng aboveMarkerLatLng = projection.fromScreenLocation(pointHalfScreenAbove);
marker.showInfoWindow();
CameraUpdate center = CameraUpdateFactory.newLatLng(aboveMarkerLatLng);
mGoogleMap.moveCamera(center);
mGoogleMap.animateCamera(center);
marker.showInfoWindow();
return true;
}
答案 1 :(得分:0)
目前,您无法将信息窗口更改为标记以下。已经在gmaps-api-issues上请求和讨论了这一点。
我只能建议你在点击到不同的位置后动画标记。添加OnMarkerClickListener
并在那里返回true
(已处理)。之后你可以打电话:
marker.showInfoWindow();
map.animateCamera(...);
创建一个类似于默认但具有不同位置的效果。
答案 2 :(得分:0)
Google地图信息窗口位置始终位于标记的顶部中间位置。如果标记被旋转。
double angle = MARKER_ROTATION_ANGLE;
double x = Math.sin(-angle * Math.PI / 180) * 0.5 + 0.5;
double y = -(Math.cos(-angle * Math.PI / 180) * 0.5 - 0.5);
marker.setInfoWindowAnchor((float)x, (float)y);
说明: 而不是 MARKER_ROTATION_ANGLE ,你必须给你的标记的确切旋转。然后它会工作正常。 :)