我已经在网上寻找解决方案,因为getMap()方法已经过时,因此,我想用getMapAsync();替换它。我搜索了谷歌以及机器人官方文件,我仍然卡住请帮忙。
我现在收到一条错误消息,说明不兼容的类型 必需的com.google.android.gms.GoogleMap发现无效。
public class Maps extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap googleMap;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.Maps);
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.mapFragment)).getMapAsync(this);
LatLng latlong = new LatLng(lat, lon);
googleMap.addMarker(new MarkerOptions().position(latlong).title(name));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlong, 15));
}
@Override
public void onMapReady(GoogleMap googleMap) {
}
}
下面的方法给出了错误,并说明了不兼容的类型 必需的com.google.android.gms.GoogleMap发现无效。
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.mapFragment)).getMapAsync(this);
答案 0 :(得分:8)
getMapAsync
返回类型为void,您尝试分配
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.mapFragment)).getMapAsync(this);
到googleMap
。哪个没有多大意义。仅拨打getMapAsync
,如
((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.mapFragment)).getMapAsync(this);
并在调用googleMap
时分配onMapReady
。 E.g。
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
}