我使用地图,在我的应用程序中,我有一个支持整个屏幕的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);
}
});
答案 0 :(得分:0)
解决。我只需要回归真实。返回false告诉ClusterManager始终将标记置于屏幕中心。