如何为谷歌地图api v2设置默认位置和缩放级别?
当我的地图显示时,它总是从一个固定的位置开始(靠近非洲)。
然后,我使用下面的代码将地图居中到我想要的位置。
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
我的问题是,我可以在地图显示之前设置默认位置和缩放级别吗?
因为我不希望我的用户在开始时看到animation。
谢谢。
你可以使用它直接缩放而不需要animation:
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));
我创build了一个SupportMapFragment
的句柄,并使用SupportMapFragment.getView().setVisibility()
将其visibility
设置为View.INVISIBLE
。 然后,在我的类实现的onLocationChanged
callback中,我检查是否INVISIBLE
并设置为VISIBLE
如果是true。 这可以摆脱你在加载时看到的跳跃,同时允许你dynamic地初始化开始位置。 在我的情况下,我正在围绕用户的位置的相机,所以onLocationChanged
立即调用,因为setMyLocationEnabled(true)
。
您的要求可能会有所不同,但只要将可见性设置为INVISIBLE
,然后在装入适当的数据后find设置VISIBLE
的好地方即可。
以防万一您想要在任何初始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。
您可以使用静态latlong直接使用CameraUpdate
LatLong latlong = new LatLong(lat, long); CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15); mGoogleMap.moveCamera(cameraPosition); mGoogleMap.animateCamera(cameraPosition);
- Intellij IDEA崩溃,现在抛出一个错误
- Android线程的计时器
- 没有find类“com.google.firebase.provider.FirebaseInitProvider”?
- 在Android 6.0上需要启用蓝牙低能耗扫描的位置
- “Android库项目无法启动”?
- 如何为不同的屏幕dynamic设置textview的文字大小
- WebView在执行onReceivedSslError时避免来自Google play的安全警报
- TileProvider使用本地磁贴
- managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()