下面是我完整的片段代码,应显示google map并指向地图中的特定位置。
package com.example.sample.karcha;
import android.location.Location;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.gms.common.api.GoogleApiClient;
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;
import com.google.android.gms.maps.model.LatLngBounds;
public class PurchasePlaceFragment extends SupportMapFragment {
private static final String TAG = "LocatrFragment";
private GoogleApiClient mClient;
private GoogleMap mMap;
private SupportMapFragment mMapFragment;
private Location mCurrentLocation;
public static SupportMapFragment newInstance() {
PurchasePlaceFragment fragment = new PurchasePlaceFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
updateUI();
}
});
}
private void updateUI() {
if (mMap == null ) {
return;
}
LatLng itemPoint = new LatLng(51.508530,-0.076132);
LatLng myPoint = new LatLng(
mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude());
LatLngBounds bounds = new LatLngBounds.Builder()
.include(itemPoint)
.include(myPoint)
.build();
int margin = getResources().getDimensionPixelSize(R.dimen.map_inset_margin);
CameraUpdate update = CameraUpdateFactory.newLatLngBounds(bounds, margin);
mMap.animateCamera(update);
}
}
执行此代码仅显示地图,但不指向特定位置。
我的理解是onMapReady()未执行,因此未调用updateUI()。
任何想法都出在哪里。
答案 0 :(得分:0)
对 getMapAsysnc 的调用似乎没有正确的方式。
注意: onMapReady()通过在MapFragment实例上调用getMapAsysnc()来调用。
查看您共享的代码,它直接调用getMapAsysnc()
尝试将其更改为
mMapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
updateUI();
}
});
这应该给您想要的结果。
希望这会有所帮助。