我有一个带有一堆东西的GoogleMapOptions对象,但我不知道如何为我的地图实际应用这些选项对象。
我正在使用支持地图片段,在查看文档之后,我看到只有一个方法是采用GoogleMapOptions对象的新实例,但是我的实现无法调用它。
这里有一些我简化的代码,不会混淆这个问题。
public class Map extends SupportMapFragment
{
private OnMapReadyCallback callback;
public static SupportMapFragment newInstance(OnMapReadyCallback callback)
{
Map map = new Map();
map.callback = callback;
return map;
}
这个类扩展了SupportMapFragment,我定义了自己的newInstance实现,该实现采用了OnMapReadyCallback变量。这在字段回调中保存并传递给方法getMapAsync(callback)
然后在实现OnMapReadyCallback的主Activity中,初始化了Google地图对象。
public class MainActivity extends ActionBarActivity implements OnMapReadyCallback
{
@Override
public void onMapReady(GoogleMap googleMap)
{
this.googleMap = googleMap;
}
}
那么我将如何应用options对象?具体来说,我想设置初始地图位置,而不是从世界角度开始,并在需要的地方进行缩放(它有点贵!)。
感谢您的阅读。如果我有任何遗漏,请告诉我。
请注意:我无法使用XML实施,因为在我的应用中,只有用户明确要求才会显示Google地图。我不想使用可见性方法,因为这会浪费内存
答案 0 :(得分:1)
请注意:我无法使用XML实施,因为在我的应用中,Google地图仅在用户明确要求时才会显示。
你似乎在这里解决了错误的问题。如果以上是您的原因,那么您应该只在您的布局中保留空容器,并在用户请求您的地图时,实例化地图片段并添加到您的布局。而你的地图片段(最有可能的子类)可以使用XML布局。
答案 1 :(得分:0)
我会覆盖static SupportMapFragment newInstance(GoogleMapOptions options)
的{{1}}方法。然后,当您调用SupportMapFragment
方法
GoogleMapOptions
对象作为参数传递
您可以通过以下操作从此static SupportMapFragment newInstance(GoogleMapOptions options)
对象获取GoogleMap
个对象:
SupportMapFragment
答案 2 :(得分:0)
它如此简单,但GoogleMapOptions只能传递给MapFragments / MapView,它添加程序化(不在布局文件/ XML中):
1-创建您想要的选项集。
2-通过' newInstance '传递它。
像这样:GoogleMapOptions options = new GoogleMapOptions().liteMode(true)
.mapType(GoogleMap.MAP_TYPE_SATELLITE);
SupportMapFragment mapFragment =
SupportMapFragment.newInstance(options );
在这种情况下,我正在使用动态 MapFragment。
但是如果您在布局文件中定义了片段,那么只需通过'onMapReady'回调函数中提供的选项来控制它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
map.getUiSettings().setZoomControlsEnabled(true);
}
我希望它对某些人有用。