我想在地图上显示某个点,但是当我将相机设置在地图上时,为什么会发生此错误?如果使用CameraUpdateFactory程序订购时出错,以前我没有遇到错误java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bongkorr/com.hospifinder.Maps}: java.lang.NullPointerException: CameraUpdateFactory is not initialized
CameraUpdateFactory的草稿代码完整,这有什么问题吗?
Maps.java
public class Maps<Passing> extends FragmentActivity implements LocationListener {
private GoogleMap map;
private DBAdapter dbhelper;
private SQLiteDatabase db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dbhelper = new DBAdapter(this);
db = dbhelper.getWritableDatabase();
dbhelper.delAllData(db);
//dbhelper.delAllData2(db);
dbhelper.generateDataLokasi(db);
dbhelper.generateDataRS(db);
setContentView(R.layout.maps);
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
map = fm.getMap();
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-6.604345,
106.796640), 12));
map.setMyLocationEnabled(true);
Cursor c = dbhelper.fetchAllLokasi(db);
int col = dbhelper.fetchAllLokasi(db).getCount();
if (col == 0) {
Toast.makeText(Maps.this, "Pas de donnees ", Toast.LENGTH_LONG)
.show();
} else {
c.moveToFirst();
while (c.isAfterLast() == false) {
String id = "" + c.getInt(0);
String nama = c.getString(1);
String longitude = c.getString(3);
String latitude = c.getString(2);
String ket = c.getString(4);
Marker marker = map.addMarker(new MarkerOptions()
.position(
new LatLng(Double.parseDouble(latitude), Double
.parseDouble(longitude)))
.title(nama)
.snippet(ket)
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.icmarker)));
c.moveToNext();
}
}
在此答案上我找不到,我几次运行此应用程序,都修复了错误,如果我的代码有问题吗?请帮忙
最佳答案
我认为您需要显式调用MapsInitializer
。
样例代码:
@Override public View
onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.map_panel, container, false);
mapView = (MapView) view.findViewById(R.id.map_view);
mapView.onCreate(savedInstanceState);
configureMap(mapView.getMap());
return view;
}
private void
configureMap(GoogleMap map, double lat, double lon)
{
if (map == null)
return; // Google Maps not available
try {
MapsInitializer.initialize(getActivity());
}
catch (GooglePlayServicesNotAvailableException e) {
Log.e(LOG_TAG, "Have GoogleMap but then error", e);
return;
}
map.setMyLocationEnabled(true);
LatLng latLng = new LatLng(lat, lon);
CameraUpdate camera = CameraUpdateFactory.newLatLng(latLng);
map.animateCamera(camera);
}