我想替换已弃用的getMap方法getMapAsync,但我没有使用,MapFragment但是GoogleMap像这样:
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);
Run Code Online (Sandbox Code Playgroud)
如果我更换googleMap与MapFragment这样我不能再对setMapType等.那么我怎么能改变getMapAsync我的情况呢?
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
Run Code Online (Sandbox Code Playgroud) 我有一个gps应用程序在我的手机上正常工作.但是,我看到有人在制作中有空指针异常.
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
// Getting GoogleMap object from the fragment
googleMap = fm.getMap();
// Enabling MyLocation Layer of Google Map
googleMap.setMyLocationEnabled(true);
googleMap.setPadding(0, 0, 0, 90);
Run Code Online (Sandbox Code Playgroud)
我从生产中得到的错误是由:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)' on a null object reference
Run Code Online (Sandbox Code Playgroud)
所以我做了一些研究,发现getMap方法已被删除,人们推荐使用 getMapAsync(this);
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap; //which doesn't seem to work
}
Run Code Online (Sandbox Code Playgroud)
但是,我googleMap在许多不同的方法中引用变量,我无法将所有代码移动到onMapReady方法.我尝试this.googleMap = googleMap在onMapReady方法内部使用,但每当我尝试引用googleMap变量时,我仍然会得到空指针异常.我在onCreated()中定义了getMapAsync(this),然后尝试访问onResume()中的'googleMap'对象并获取空指针异常.有没有办法来解决这个问题?谢谢.
我有这个代码的问题,"无法解决方法getMap().我没有找到问题所在,请求代码帮助,我使用Android Studio,需要使用Json的mySQL标记位置.
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.googleMap)).getMap();`
Run Code Online (Sandbox Code Playgroud)
这是完整的代码
public class MainActivity extends FragmentActivity {
private GoogleMap googleMap;
private Double Latitude = 0.00;
private Double Longitude = 0.00;
private GoogleApiClient client2;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
ArrayList<HashMap<String, String>> location = null;
String url = "http://www.evil.cl/getLatLon.php";
try {
JSONArray data = new JSONArray(getHttpGet(url));
location = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
for (int i = 0; i < data.length(); …Run Code Online (Sandbox Code Playgroud)