如何更改谷歌地图v2 android中的信息窗口(自定义)位置?

时间:2014-02-10 13:27:26

标签: android google-maps

我有一个带谷歌地图的屏幕,在屏幕上方有一个用于搜索位置的自动文本视图,并制作一个自定义信息窗口以显示更多详细信息,问题是当用户点击任何标记自定义窗口弹出窗口作为其默认行为时(屏幕中心),所以它混合了autotextview,我可以在屏幕上更改信息窗口位置,即底部或类似的东西。

3 个答案:

答案 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 ,你必须给你的标记的确切旋转。然后它会工作正常。 :)