以编程方式设置GoogleMapOptions

时间:2014-02-27 12:24:01

标签: android google-maps android-fragments

我正在给我的片段充气:

GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.MapFragment_map_Fragment)).getMap(); 

在这里我有我的选择:

GoogleMapOptions options = new GoogleMapOptions();
options.mapType(GoogleMap.MAP_TYPE_SATELLITE);

documentation我看到我需要使用它:

  

要在创建地图时应用这些选项,请执行以下操作之一   以下内容:

     

如果您使用的是MapFragment,请使用   MapFragment.newInstance(GoogleMapOptions options)静态工厂   构造片段并传入自定义配置的方法   选项。

但我不明白我怎么想用这个。

2 个答案:

答案 0 :(得分:13)

我认为只有在以编程方式创建地图视图时才能使用GoogleMapOptions(将选项传递给MapFragment.newInstance()方法 - docs)。您正在从xml中膨胀MapFragment,因此您无法以这种方式使用它们。在您的情况下,您仍然可以使用GoogleMap制定者或UiSettings来更改地图选项。

例如:

GoogleMap googleMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map_fragment)).getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);

答案 1 :(得分:2)

我以编程方式使用LiteMode,而不是在XML文件中设置MapView和MapFragment的属性。试试这个:

GoogleMapOptions googleMapOptions = new GoogleMapOptions().liteMode(true);
googleMap.setMapType(googleMapOptions.getMapType());

或者用XML:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.mapslastapp.MapsActivity"
    map:liteMode="true"
    map:cameraZoom="16"
    map:mapType="normal"/>