Android 如何设置google map api v2的默认位置和缩放级别?
当我的地图显示时,它总是从一个固定的位置开始(靠近非洲) 然后,我使用以下代码将地图居中到我想要的位置Android 如何设置google map api v2的默认位置和缩放级别?,android,google-maps,google-maps-api-3,Android,Google Maps,Google Maps Api 3,当我的地图显示时,它总是从一个固定的位置开始(靠近非洲) 然后,我使用以下代码将地图居中到我想要的位置 mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f)); 我的问题是,我可以在地图显示之前设置默认位置和缩放级别吗 因为我不希望我的用户在开始时看到动画 谢谢。您可以使用此选项直接缩放,而无需动画: map.moveCamer
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f));
我的问题是,我可以在地图显示之前设置默认位置和缩放级别吗
因为我不希望我的用户在开始时看到动画
谢谢。您可以使用此选项直接缩放,而无需动画:
map.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(xxxx,xxxx) , 14.0f) );
请查看此处的文档: 根据您是通过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"/>
我创建了一个
SupportMapFragment
的句柄,并使用SupportMapFragment.getView().setVisibility()将其可见性设置为View.INVISIBLE
。然后,在类实现的onLocationChanged
回调中,我检查是否不可见
,如果为真,则设置为可见。这消除了加载时看到的跳跃,同时允许动态初始化起始位置。在我的例子中,我将相机围绕用户位置居中,因此会立即调用onLocationChanged
,因为setMyLocationEnabled(true)
您的要求可能不同,但无论哪种方式,您都只需将可见性设置为“不可见”
,然后在加载相应的数据后,找到一个好位置设置“可见”
。您可以使用静态latlong使用directy CameraUpdate
LatLong latlong = new LatLong(lat, long);
CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latLong, 15);
mGoogleMap.moveCamera(cameraPosition);
mGoogleMap.animateCamera(cameraPosition);
如果您想以编程方式在任何初始位置加载谷歌地图
,那么您可以使用这段代码
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" />
这将直接在特定的位置加载谷歌地图
,即初始化。谢谢,这正是我需要的:)我有最小纬度/经度和最大纬度/经度,然后如何设置???你可以为此添加新问题,以便我可以为你发布完整答案,但简而言之,您必须使用LatLngBounds.Builder来建立边界并使用它。@Saksak我的问题是,我正在等待GPS获取MyLocation
,以便将地图移动并缩放到用户的位置。因为映射是在XML中初始化的,所以我不知道如何防止跳转发生。理想情况下,我会隐藏映射直到找到MyLocation
,然后显示它。当我放置映射时,它给了我一个错误,并告诉我创建一个变量“map”。有可能进口什么的吗?回答得好。实际上,这个问题更适合这个问题。在xml中,我得到了为标记片段找到的lint error意外的名称空间前缀“map”
,即使使用xmlns:map=“schemas.android.com/apk/res auto”,您仍然有相同的错误。尝试添加此xmlns:tools=“”,并使用“tools:”而不是“map:”链接到文档,并提供所有选项:正在查找布局属性,工作正常。谢谢这个问题帮助了。。。。即使位置未启用…animateCamera指向非洲的某个地方。。。威德moveCamera
是解决这个问题的最佳方案哈哈哈哈哈……+1关于这个问题,你问得我心烦意乱D.“它总是从一个固定的位置(靠近非洲)开始”……罗夫尔…………谢谢,尽管如此。@akash89它从LatLng(0.0,0.0)开始,正如预期的那样:我不确定是什么让你在地板上滚来滚去大笑(如果我没有弄错的话),但我很高兴你很高兴:)
<RelativeLayout
android:id="@+id/rl_map"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />