Android 使用animateCamera将标记位置映射到屏幕位置x、y

Android 使用animateCamera将标记位置映射到屏幕位置x、y,android,google-maps,Android,Google Maps,亲爱的, 我有一个覆盖整个屏幕的地图视图。在它的顶部,有一个查看寻呼机。 视图寻呼机由两部分组成,顶部40%和底部60%,顶部只是一个透明视图 当滑动视图寻呼机时,地图上显示的标记应位于透明顶视图的中间40% 这张图片描述了这个故事: 如何做到这一点? 我试过了,但没有成功: public void FollowVehicle(clsFollowMode vehicle){ final LatLng vehiclePosition = new LatLng(vehicle.getLa

亲爱的,

我有一个覆盖整个屏幕的地图视图。在它的顶部,有一个查看寻呼机。 视图寻呼机由两部分组成,顶部40%和底部60%,顶部只是一个透明视图

当滑动视图寻呼机时,地图上显示的标记应位于透明顶视图的中间40%

这张图片描述了这个故事:

如何做到这一点? 我试过了,但没有成功:

public void FollowVehicle(clsFollowMode vehicle){
     final LatLng vehiclePosition = new LatLng(vehicle.getLatitude(), vehicle.getLongtitude());
     Marker vehicleMarker = myGMap.addMarker(new MarkerOptions()
                                .position(vehiclePosition)
                                .title(vehicle.getDeviceName())
                                .snippet(String.valueOf(vehicle.getSpeed()))
                                .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_vehicle_follow)));

     float zoom_lvl = myGMap.getCameraPosition().zoom;

     double dpPerdegree = 256.0*Math.pow(2, zoom_lvl)/170.0; 
     double screen_height = (double) mapContainer.getHeight(); 
     double screen_height_30p = -20.0*screen_height/100.0; 
     double degree_30p = screen_height_30p/dpPerdegree;

     LatLng centerlatlng = new LatLng( vehiclePosition.latitude + degree_30p, vehiclePosition.longitude );

     myGMap.animateCamera( CameraUpdateFactory.newLatLngZoom( centerlatlng, 15 ), 1000, null);
}
有什么帮助吗?上述解决方案


关于,

如果我理解正确,那么您的问题是您将地图放置为全屏fragmnet,并且在其上放置了
查看页面
。因此,当您以标记为中心时,地图会这样做,但标记位于
ViewPager

您可以欺骗地图,使其认为其尺寸比实际尺寸小,通过使用该方法,您可以在此处阅读更多有关它的信息:


那么问题出在哪里?你说没有运气是什么意思?现在它是如何工作的?当寻呼机第一次打开时,它不会集中到第一个标记,但当我移动到其他页面时,它会集中到第一个标记,而且,当我再次返回到第一个页面进行第二次时,它工作得很好。此外,页面和其他页面之间缩放的任何更改都会导致下一个标记的错误集中。我想当这段代码处于缩放级别时,我会遇到问题。有什么建议吗?我做错了什么?嗨,首先我想确认你对我的问题的理解,其次,我尝试了你的建议,通过
ViewPager
的40%透明视图设置
GoogleMap.setPadding
方法如下:
myGMap.setPadding(transGap.getLeft(),transGap.getTop(),transGap.getRight(),transGap.getBottom()),没有任何变化,它仍然集中在整个屏幕中央的
ViewPager
后面。我做错了什么?明白了:),我只使用60%视图来设置底部填充,而且效果非常好:
myGMap.setPadding(0,0,0,bottomview.getHeight()),谢谢你,告诉你这就是你需要的:)