Google地图未在所需位置居中

时间:2019-07-18 13:50:11

标签: android google-maps

我正在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公里。

我在做什么错了?

3 个答案:

答案 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)

positionzoom级别下像一行一样使用移动相机。在您的情况下,您必须先将相机移动到标记位置,但再次将动画设置为动画。那么标记的位置可能会随您的经历而改变。如下使用它。

CameraUpdate update = CameraUpdateFactory.newLatLngZoom(miPosition, 15);

然后您可以将其用于move

googleMap.moveCamera(update);

或将其发送到animate

googleMap.animateCamera(update);