我正在Android应用程序中使用Google Maps。
我需要将地图中心放在设备的当前位置。
我正在使用以下代码来做到这一点:
String latitud_usuario = prefs.getString("latitud", "");
String longitud_usuario = prefs.getString("longitud", "");
String username = prefs.getString("username", "");
Log.d("JSON", "spots en home latitud " + latitud_usuario);
Log.d("JSON", "spots en home longitud " + longitud_usuario);
Log.d("JSON", "spots en home username " + username);
LatLng miPosition = new LatLng(Double.parseDouble(latitud_usuario), Double.parseDouble(longitud_usuario));
googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.map_style));
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
change_map_satelite.setVisibility(View.VISIBLE);
change_map_normal.setVisibility(View.GONE);
Marker yo = googleMap.addMarker(new MarkerOptions()
.position(miPosition)
.title(username)
);
yo.setTag(username);
googleMap.moveCamera(CameraUpdateFactory.newLatLng(miPosition));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
googleMap.animateCamera(zoom);
现在,地图显示当前位置标记,但不在屏幕中央。
我正在从共享首选项中获取当前位置的纬度和经度。
两个值都正确,并在日志输出中进行了验证:
spots en home latitud 41.6352103
spots en home longitud 2.1633905
地图屏幕中心距所需位置不远,距所需位置北约10公里。
我在做什么错了?
答案 0 :(得分:2)
我认为如果位置有效,就可以使用动画相机了
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(miPosition).zoom(15).build();
googleMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPosition));
答案 1 :(得分:1)
移动到下面的中心位置
Projection projection = googleMap.getProjection();
LatLng markerPosition = marker.getPosition();
Point markerPoint = projection.toScreenLocation(markerPosition);
Point targetPoint = new Point(markerPoint.x, markerPoint.y - view.getHeight() / 2);
LatLng targetPosition = projection.fromScreenLocation(targetPoint);
googleMap.animateCamera(CameraUpdateFactory.newLatLng(targetPosition), 1000, null);
答案 2 :(得分:1)
在position
和zoom
级别下像一行一样使用移动相机。在您的情况下,您必须先将相机移动到标记位置,但再次将动画设置为动画。那么标记的位置可能会随您的经历而改变。如下使用它。
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(miPosition, 15);
然后您可以将其用于move
googleMap.moveCamera(update);
或将其发送到animate
googleMap.animateCamera(update);