我是 Android 开发新手,我使用视频教程,他getMap()
用于初始化 mMap 对象,我尝试使用getMapAsync()
. 但是当尝试初始化我的应用程序时崩溃了。
这是我的initMap()
代码:
package com.example.sajjad.mymaps;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
public class MainActivity extends AppCompatActivity {
private static final int ERROR_DIALOG_REQUEST = 9901;
GoogleMap mMap;
private static final double
TEHRAN_LAT = 35.741785,
TEHRAN_LNG = 51.447100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (servicesOk()) {
initMap();
setContentView(R.layout.activity_map);
Toast.makeText(this,"Ready to map!", Toast.LENGTH_SHORT).show();
// gotoLocation(TEHRAN_LAT,TEHRAN_LNG);
} else {
setContentView(R.layout.activity_main);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
return true;
}
public boolean servicesOk() {
int isAvailable = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this);
GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
if(isAvailable != ConnectionResult.SUCCESS) {
if(googleAPI.isUserResolvableError(isAvailable)) {
googleAPI.getErrorDialog(this, isAvailable,ERROR_DIALOG_REQUEST).show();
}
return false;
}
return true;
}
private void initMap() {
SupportMapFragment mapFragment =
((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
});
}
private void gotoLocation(double lat, double lng) {
LatLng latLng = new LatLng(lat,lng);
CameraUpdate update = CameraUpdateFactory.newLatLng(latLng);
mMap.moveCamera(update);
}
}