当我的地图显示时,它总是从固定位置开始(在非洲附近)。
然后,我使用以下代码将地图居中放置到所需位置。
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
我的问题是,我可以在地图显示之前设置默认位置和缩放级别吗?
因为我不希望用户一开始就看到动画。
谢谢。
当我的地图显示时,它总是从固定位置开始(在非洲附近)。
然后,我使用以下代码将地图居中放置到所需位置。
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
我的问题是,我可以在地图显示之前设置默认位置和缩放级别吗?
因为我不希望用户一开始就看到动画。
谢谢。
Answers:
您可以使用它直接缩放而不使用动画:
map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );
MyLocation
以便可以将地图移动并缩放到用户的位置。由于映射是在XML中初始化的,因此我无法弄清楚如何避免发生跳转。理想情况下,我将隐藏地图直到MyLocation
找到然后再显示。
在这里查看文档:
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));
Unexpected namespace prefix "map" found for tag fragment
万一您想以编程方式Google Map
在任何初始位置加载,Location
就可以使用这段代码,
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" />
这将GoogleMap
特别Location
直接加载,即initialLatLng。
我创建了一个句柄SupportMapFragment
并将其设置visibility
为View.INVISIBLE
using SupportMapFragment.getView().setVisibility()
。然后,在onLocationChanged
我的类实现的回调中,检查是否INVISIBLE
并将其设置为VISIBLE
true。这消除了您在加载时看到的跳跃,同时允许您动态初始化起始位置。在我的情况下,我将相机对准用户的位置,因此onLocationChanged
由于而被立即称为setMyLocationEnabled(true)
。
您的要求可能有所不同,但是无论哪种方式,您只需要将可见性设置为INVISIBLE
,然后VISIBLE
在加载适当的数据后找到一个合适的放置位置即可。
您可以使用静态latlong直接使用CameraUpdate
LatLong latlong = new LatLong(lat, long);
CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
mGoogleMap.moveCamera(cameraPosition);
mGoogleMap.animateCamera(cameraPosition);
moveCamera
是对此的最佳解决方案