【问题标题】:Setting GoogleMapOptions programmatically以编程方式设置 GoogleMapOptions
【发布时间】:2014-02-27 12:24:01
【问题描述】:
我正在像这样膨胀我的片段:
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) 静态工厂
构造片段并传入您的自定义配置的方法
选项。
但我不明白我应该如何使用它。
【问题讨论】:
标签:
android
google-maps
android-fragments
【解决方案1】:
我认为只有在以编程方式创建地图视图时才能使用 GoogleMapOptions(将选项传递给 MapFragment.newInstance() 方法 - docs)。您正在从 xml 膨胀MapFragment,因此您将无法以这种方式使用它们。在您的情况下,您仍然可以使用 GoogleMap setter 或 UiSettings 更改地图选项。
例如:
GoogleMap googleMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map_fragment)).getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
【解决方案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"/>