繁体   English   中英

如何为google map api v2设置默认位置和缩放级别?

[英]How do I set default location and Zoom level for google map api v2?

当我的地图显示时,它总是从固定的位置(非洲附近)开始。

然后,我使用以下代码将地图居中到我想要的位置。

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));

我的问题是,我可以在地图显示之前设置默认位置和缩放级别吗?

因为我不希望我的用户在开始时看到动画。

谢谢。

你可以使用它来直接缩放而不需要动画:

map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );

看一下这里的文档:

https://developers.google.com/maps/documentation/android-api/map#configure_initial_state

根据您是通过XML添加地图还是以编程方式添加地图,这样做的方式略有不同。 如果您使用的是XML,则可以按如下方式执行:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:map="http://schemas.android.com/apk/res-auto"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.SupportMapFragment"
  map:cameraBearing="112.5"
  map:cameraTargetLat="-33.796923"
  map:cameraTargetLng="150.922433"
  map:cameraTilt="30"
  map:cameraZoom="13"/>

如果以编程方式执行此操作,则可以执行以下操作:

CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(new LatLng(-33, 150))
    .zoom(13)
    .build();
MapFragment.newInstance(new GoogleMapOptions()
    .camera(camera));

如果您想以编程方式在任何初始Location加载Google Map ,那么您可以使用这段代码,

FragmentManager fm = getFragmentManager(); // getChildFragmentManager inside fragments.
CameraPosition cp = new CameraPosition.Builder()
                    .target(initialLatLng) // your initial co-ordinates here. like, LatLng initialLatLng
                    .zoom(zoom_level)
                    .build();
SupportMapFragment mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().camera(cp));
fm.beginTransaction().replace(R.id.rl_map, mapFragment).commit();

添加这段代码进行layout

<RelativeLayout
       android:id="@+id/rl_map"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" />

这将直接在特定Location加载GoogleMap ,即initialLatLng。

我创建了一个SupportMapFragment的句柄,并使用SupportMapFragment.getView().setVisibility()将其visibility设置为View.INVISIBLE 然后,在我的类实现的onLocationChanged回调中,检查是否为INVISIBLE ,如果为true则设置为VISIBLE 这可以消除您在加载时看到的跳跃,同时允许您动态初始化起始位置。 在我的情况下,我将相机围绕用户的位置居中,因此onLocationChanged由于setMyLocationEnabled(true)立即被调用。

您的要求可能不同,但无论哪种方式,您只需将可见性设置为INVISIBLE ,然后在加载适当的数据后找到一个设置VISIBLE的好地方。

你可以使用static latlong使用directy CameraUpdate

 LatLong latlong = new LatLong(lat, long);
 CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
                mGoogleMap.moveCamera(cameraPosition);
                mGoogleMap.animateCamera(cameraPosition);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM