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

时间:2013-12-15 20:22:56

标签: android google-maps

亲爱的,

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

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

此图片描述了这个故事:

Sketch

如何实现这一目标? 我试过这个,但没有运气:

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);
}

有任何帮助吗?上述解决方案found here

此致

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您的问题就是您将地图设置为全屏碎片,并在此基础上放置了ViewPager。因此,当您以标记为中心时,地图会执行此操作,但标记位于ViewPager

你可以通过使用GoogleMap.setPadding方法欺骗地图,使其认为它的尺寸更小,你可以在这里阅读更多相关内容:

https://developers.google.com/maps/documentation/android/map#map_padding