相机地图永远不会偏移到偏移位置

时间:2017-11-27 18:27:10

标签: android google-maps google-maps-api-3

我使用地图,在我的应用程序中,我有一个支持整个屏幕的SupportMapFragment。单击标记时会显示一个弹出窗口。显示时,此弹出窗口占据屏幕的75%。

因此我需要将标记置于剩余的25%中心。为此,我使用了CluserManager中的setOnClusterItemClickListener。但无论我做什么,标记总是会到达SupportMapFragment的中心。

我从这个答案中尝试了大多数解决方案:

How to center the camera so that marker is at the bottom of screen? (Google map api V2 Android)

没有成功。下面我把一些代码。我想知道的是为什么标记继续进入屏幕的中心。

 clusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MyItem>() {
    @Override
    public boolean onClusterItemClick(MyItem myItem) {

    LatLng location = myItem.getPosition();


    /*float zoom_lvl = googleMap.getCameraPosition().zoom;
    double dpPerdegree = 256.0*Math.pow(2, zoom_lvl)/170.0;
    double screen_height = (double) mapFragment.getView().getHeight();
    double screen_height_30p = 50.0*screen_height/100.0;
    double degree_30p = screen_height_30p/dpPerdegree;
    LatLng centerlatlng = new LatLng( location.latitude, location.longitude  + degree_30p);
    googleMap.animateCamera(CameraUpdateFactory.newLatLng(centerlatlng), 1000, null);*/

    Projection projection = googleMap.getProjection();
    LatLng markerPosition = myItem.getPosition();
    Point markerPoint = projection.toScreenLocation(markerPosition);
    Point targetPoint = new Point(markerPoint.x, markerPoint.y - mapFragment.getView().getHeight() / 4);
    LatLng targetPosition = projection.fromScreenLocation(targetPoint);
    googleMap.animateCamera(CameraUpdateFactory.newLatLng(targetPosition), 1000, null);
}
});

1 个答案:

答案 0 :(得分:0)

解决。我只需要回归真实。返回false告诉ClusterManager始终将标记置于屏幕中心。