在Google Maps V2中居中相机

5
在我的安卓应用程序中,我有以下代码...
CameraUpdate center= CameraUpdateFactory.newLatLng(new LatLng(Lat,Lon));
DebugLog.debugLog("centered camera on " + Lat + " and " + Lon, false);
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(15);
map.moveCamera(center);
    map.animateCamera(zoom);
map.addMarker(new MarkerOptions()
        .position(new LatLng(Lat, Lon))
        .title("Phone Location")
            );

纬度为31.7898,经度为-111.0354。

标记的位置是准确的。然而,在v2地图上相机的中心位置在该位置北约5英里处。为什么呢?谢谢,Gary。


1
尝试将居中和缩放合并为一个操作,而不是两个。 - CommonsWare
只是为了展示如何这样做的一个例子: map.animateCamera(CameraUpdateFactory.newLatLngZoom(location, 15)); - cYrixmorten
2个回答

6

阅读了额外的文档后,我发现以下代码有效...

    CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(new LatLng(Lat, Lon))
        .zoom(15)
        .bearing(0)
        .tilt(45)
        .build();
    map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    map.addMarker(new MarkerOptions()
    .position(new LatLng(Lat, Lon))
    .title("Phone Location")
        );  

我认为我的原始代码也应该有效。 Gary


3

保持视角不变,但将相机居中于当前点击的标记处:

    obj_map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker arg0) {
        CameraPosition obj_cam = new CameraPosition.Builder()
                .target(new LatLng(arg0.getPosition().latitude, arg0.getPosition().longitude))
                .zoom(obj_map.getCameraPosition().zoom)
                .tilt(obj_map.getCameraPosition().tilt)
                .bearing(obj_map.getCameraPosition().bearing)
                .build();
        obj_map.animateCamera(CameraUpdateFactory.newCameraPosition(obj_cam));
        return true;
    }

你可以通过将 obj_map.getCameraPosition() 传递给 Builder 构造函数来简化此过程。这将使用现有的目标、缩放、倾斜和方位初始化 Builder:CameraPosition obj_cam = new CameraPosition.Builder(obj_map.getCameraPosition()) - carlospiles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接