2016-08-26 7 views
0

Я пытаюсь «раздуть» свой контент из SQLite в маркеры, но решение, которое я принял here, не работает, и оно не бросает никакой информации о Log.Android - Cursor onMapReady (Markers)

Я немного нового на этом Marker вещи и SQLite

Мой код внутри Fragment:

SQLiteHelper dbHelper = new SQLiteHelper(getActivity()); pds = new ParksDataSource(dbHelper.db);

parks = pds.getAllParks(); 

    List<Marker> markersList = new ArrayList<Marker>(); 
    int i = 0; 
    Cursor cursor = db.rawQuery("SELECT * FROM " + SQLiteHelper.TABLE_PARKS, 
      null); 
    try { 
     while (cursor.moveToNext()) { 
      String[] latlong = cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_COORDINATES)).split(","); 
      double latitude = Double.parseDouble(latlong[0]); 
      double longitude = Double.parseDouble(latlong[1]); 
      mark = new LatLng(latitude, longitude); 
      Marker mPark = mMap.addMarker(new MarkerOptions().position(mark) 
        .title(cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_TITLE))) 
        .icon(BitmapDescriptorFactory.fromBitmap(writeTextOnDrawable(R.mipmap.ic_pin, cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_FREE)))))); 
      mPark.setTag(0); 
      markersList.add(mPark); 
      Log.d("HierParks", "Pin: " + i + ", " + latitude + "," + longitude + " - Park:" + cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_TITLE))); 
      i++; 
     } 
    } finally { 
     cursor.close(); 
    } 

    LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
    for (Marker m : markersList) { 
     builder.include(m.getPosition()); 
    }` 

Спасибо за ваше время.

ответ

0

Наконец-то мне удалось исправить это, надеюсь, что эта помощь кому-то поможет.

Мои ParkDataSource:

public Cursor getAll() { 
     return db.rawQuery("SELECT * FROM " + SQLiteHelper.TABLE_PARKS, 
       null); 
    } 

Мой фрагмент:

SQLiteHelper dbHelper = new SQLiteHelper(getActivity()); 
     pds = new ParksDataSource(dbHelper.db); 
     cursor = pds.getAll(); 

     List<Marker> markersList = new ArrayList<Marker>(); 
     int i = 0; 
     try { 
      while (cursor.moveToNext()) { 
       String[] latlong = cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_COORDINATES)).split(","); 
       double latitude = Double.parseDouble(latlong[0]); 
       double longitude = Double.parseDouble(latlong[1]); 
       mark = new LatLng(latitude, longitude); 

       if (cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_SLOTS)) == null){ 

        Marker mPark = map.addMarker(new MarkerOptions().position(mark) 
          .title(cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_TITLE))) 
          .icon(BitmapDescriptorFactory.fromBitmap(writeTextOnDrawable(R.mipmap.ic_pin, cursor.getString(cursor.getColumnIndex(SQLiteHelper.COL_PARKS_FREE)))))); 
        mPark.setTag(0); 
        markersList.add(mPark); 
       } 
       i++; 
      } 
     } finally { 
      cursor.close(); 
     } 

     LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
     for (Marker m : markersList) { 
      builder.include(m.getPosition()); 
     }