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" />