Hy!Я уже несколько дней пытаюсь создать приложение, которое получает данные GPS и должно сохранять их в базе данных Sqlite. Я создал базу данных и у меня также есть список массивов GeoPoints, который я добавил в свои геоинты. Данные GPSмоделируется с помощью файла KML.Теперь моя проблема заключается в том, что, несмотря на то, что мне удалось отобразить карту, которая была обновлена с новыми местоположениями, в то время как я пытаюсь прочитать из базы данных Sqlite и отобразить на экране гео-точки, я ничего не получаю - на экране нет текста.*
Вот мой код:
public class screen4 extends MapActivity
{
private LocationManager lm;
private LocationListener locationListener;
private MyLocationOverlay myLocOverlay;
private MapView mapView;
private MapController mc;
List<GeoPoint> geoPointsArray = new ArrayList<GeoPoint>();
int latitude;
int longitude;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen4);
lm = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
mapView = (MapView) findViewById(R.id.mapview1);
mapView.setBuiltInZoomControls(true);
mc = mapView.getController();
initMyLocation();
DBAdapter db=new DBAdapter(this);
db.createDatabase();
db.openDataBase();
for (int i = 0; i < geoPointsArray.size()-1; i++)
{
GeoPoint loc=geoPointsArray.get(i);
db.insertData(Integer.toString(loc.getLongitudeE6()),Integer.toString(loc.getLatitudeE6()),null,null,null);
}
Cursor c=db.getAllData();
if(c.moveToFirst())
{
do{
DisplayTitle(c);
}while(c.moveToNext());
}
if(c!=null&&!c.isClosed()){
db.close();
}
}
private void initMyLocation() {
myLocOverlay = new MyLocationOverlay(this, mapView);
myLocOverlay.enableMyLocation();
mapView.getOverlays().add(myLocOverlay);
}
public void DisplayTitle(Cursor c)
{
Toast.makeText(this,
"longitude: " + c.getString(0) + "\n" +
"latitude: " + c.getString(1) + "\n",
Toast.LENGTH_LONG).show();
}
private class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
latitude=(int) (loc.getLatitude()* 1E6);
longitude=(int) (loc.getLongitude()* 1E6);
GeoPoint p = new GeoPoint(latitude,longitude);
geoPointsArray.add(p);
mc.animateTo(p);
mc.setZoom(17);
mapView.invalidate();
mapView.setSatellite(true);
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
Я отладил свой код построчно, и когда я добрался до этой строки (первой):
for (int i = 0; i < geoPointsArray.size()-1; i++)
{
GeoPoint loc=geoPointsArray.get(i);
db.insertData(Integer.toString(loc.getLongitudeE6()),Integer.toString(loc.getLatitudeE6()),null,null,null);
}
отладчик переходит этот фрагмент ... теперь для меня это означает, что у меня нет смысла в моем geoPointsArray, и мне нечего хранить в базе данных, и нечего читать из Sqlite.Может кто-нибудь помочь мне, пожалуйста, с некоторыми идеями. Спасибо