本文介绍了用getMapAsync替换getMap的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想用 getMapAsync
替换弃用的 getMap
方法,但我没有使用 MapFragment
但是 GoogleMap
是这样的:
I want to replace the deprecated getMap
Method with getMapAsync
, but I didn't use MapFragment
but GoogleMap
like this:
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
try {
if(googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
}
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
googleMap.setMyLocationEnabled(true);
googleMap.setTrafficEnabled(true);
googleMap.setIndoorEnabled(true);
googleMap.setBuildingsEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
如果我用<$替换 googleMap
c $ c> MapFragment 就像这样我再也不能使用 setMapType
等等。所以我怎么能改变为 getMapAsync
在我的情况下?
If I replace the googleMap
with MapFragment
like this I'm not able anymore to setMapType
and so on. So how can I change to getMapAsync
in my case?
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
推荐答案
在官方文档中,获取地图异步需要回电话;
它在那里是您的主要入口点谷歌地图的东西!
as in the official doc, get map async requires a callback;it's there your "main entry point" for google maps stuff!
public class MapPane extends Activity implements OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_activity);
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
// DO WHATEVER YOU WANT WITH GOOGLEMAP
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
map.setMyLocationEnabled(true);
map.setTrafficEnabled(true);
map.setIndoorEnabled(true);
map.setBuildingsEnabled(true);
map.getUiSettings().setZoomControlsEnabled(true);
}
}
这篇关于用getMapAsync替换getMap的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!