Google地图不会缩放。坚持看到整个世界

时间:2014-01-03 09:19:56

标签: android google-maps android-fragments

正如标题所说,我有谷歌地图v2工作,但它不会放大。蓝点似乎显示我的位置,但我也显示了整个世界。我需要一张禁用所有内容的地图。您无法放大或缩小,您无法使用手势并且位置固定在您所在位置的某个距离。结果这是一个非常大的问题。我正在使用导航抽屉,这是附加到它的片段之一+ xml:

public class MapsPage extends Fragment {

Context mContext;
private SupportMapFragment mapFrag;
private GoogleMap gMap;
private double getLat, getLng;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.map_page, container, false);

    return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    FragmentManager fm = getChildFragmentManager();
    mapFrag = (SupportMapFragment) fm.findFragmentById(R.id.map);
    if (mapFrag == null) {
        mapFrag = SupportMapFragment.newInstance();
        fm.beginTransaction().replace(R.id.map, mapFrag).commit();
    }
}

@Override
public void onResume() {
    super.onResume();
    if (gMap == null) {
        gMap = mapFrag.getMap();

        gMap.getUiSettings().setZoomControlsEnabled(false);
        gMap.getUiSettings().setCompassEnabled(false);
        gMap.getUiSettings().setMyLocationButtonEnabled(true);
        gMap.getUiSettings().setAllGesturesEnabled(false);
        gMap.setMyLocationEnabled(true);
        getLat = gMap.getMyLocation().getLatitude();
        getLng = gMap.getMyLocation().getLongitude();

        final LatLng myLocation = new LatLng(getLat, getLng);

        CameraPosition cPosition = new CameraPosition.Builder()
            .target(myLocation)
            .zoom(16)
            .bearing(10)
            .tilt(30)
            .build();
        gMap.animateCamera(CameraUpdateFactory.newCameraPosition(cPosition));
    }
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState){
    super.onViewCreated(view, savedInstanceState);

}
@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

}
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}
public void setupMap(){
    Log.d("SUCCESS" , "SUCCESS");
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<RelativeLayout
    android:id="@+id/map"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>
</RelativeLayout>

我学会了把我的代码放在onResume中,我不记得为什么但如果有更好的方法请告诉我。现在要加载地图我必须关闭然后再打开手机屏幕。显然我会在适当的时候改变它,我只是想让事情先发挥作用。

我在logcat中遇到两个错误,一个是关于活动暂停时没有恢复的错误。当我从onResume中获取所有内容时,我确信我可以解决这个问题,所以我认为这是无关的:

01-03 09:02:38.519: E/ActivityThread(16906): Performing pause of activity that
is not resumed: {package.name.and.Activity.class}

我没有在我的活动类中调用onResume方法,这个方法处理碎片,所以它可能与此问题无关(我认为)。

另一个,告诉我找不到Google Play服务库。我为此搜索了StackOverflow,并且在使用setMyLocationEnabled导致这种情况时似乎存在一个错误,或者有些人认为,其他人则没有。我现在忽略它,因为地图正在加载,我的位置正在显示,它只是不会放大到我设置的级别。

01-03 09:02:44.824: E/GooglePlayServicesUtil(16906): The Google Play services
resources were not found. Check your project configuration to ensure that
the resources are included.

如何修复缩放或代码搞砸导致的任何想法?非常感谢您的帮助,提前谢谢。

编辑:我已经使用了LocationManager来让地图放大到适当的位置,这有效,它不如蓝点那么准确。它结束了我的街道,但没有任何东西,但没有放大蓝点,我将继续努力。

2 个答案:

答案 0 :(得分:0)

Update res/layout/activity_main.xml and replace the entire contents with this....


<fragment xmlns:android="http://schemas.android.com/apk/res/android"

 android:id="@+id/map"

 android:layout_width="match_parent"

 android:layout_height="match_parent"

 class="com.google.android.gms.maps.SupportMapFragment"/>

甚至尝试将其设为真实

   gMap.getUiSettings().setZoomControlsEnabled(true);

答案 1 :(得分:0)

我最后通过调用LocationManager并基于它来设置服务来修复它。所以我可以得到正确的LatLng设备。它每次都返回null。现在它显示位置或最后已知位置。这不是一个完美的实现,但地图现在放大。