Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Получение значений lat long из базы данных в Android

Автор вопроса: user1354861Ответов: 2

Я следил за более ранним вопросом (находится здесь: Получить широту и долготу из базы данных SQLite для использования в Android MapOverlay)

Я понимаю код там, и моя база данных имеет аналогичную структуру в том, что она имеет 4 столбца; идентификатор, имя, широта и долгота. Я даже хочу сделать то, что там сказано, в том, что он выбирает все из этой таблицы и помещает долготу в виде точек в оверлей. Моя проблема в том, что ответ требует некоторых предварительных условий, поэтому мне просто интересно, может ли кто-нибудь помочь мне в том, что необходимо для этой работы.

Заранее спасибо, и вот текущее состояние кода, который я редактировал;

ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        Cursor locationCursor = databaseObject.query("locations", new String[] {"image_id", "name", "lat", "lng" }, null, null, null, null);

        locationCursor.moveToFirst();
        do {
            String image_id = locationCursor.getString(locationCursor
                    .getColumnIndex("image_id"));
            String name = locationCursor.getString(locationCursor
                    .getColumnIndex("name"));
            int latitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lat")) * 1E6);
            int longitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lng")) * 1E6);
            items.add(new OverlayItem(new GeoPoint(latitude, longitude), image_id, name));
        } while (locationCursor.moveToNext());

В частности, я получаю сообщение об ошибке с databaseObject.query, которое, как я предполагаю, связано с тем, что у меня нет частей до этого.

Редактировать.

Для дополнительной ясности цель состоит в том, чтобы получить значения широты и долготы из моей таблицы в phpmyadmin и показать их в моем приложении для Android на наложении карт Google. Приведенный выше код является отображением примера, который я нашел, но не смог заставить его работать, потому что перед кодом требовалось несколько частей.

google-mapsandroidlatitude-longitude

Ответы

Ответ 1 · рейтинг 1 · Rakesh

В случае, если запрос не возвращает никаких записей, курсор будет пустым, и оператор do while все равно будет выполнен, что в конечном итоге приведет к ошибкам. Попробуй это

Отредактировано::

        SQLiteDatabase databaseObject = null;
        databaseObject = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null);
        ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        Cursor locationCursor = databaseObject.query("locations", new String[] {"image_id", "name", "lat", "lng" }, null, null, null, null);


         while (locationCursor.moveToNext()){
            String image_id = locationCursor.getString(locationCursor
                    .getColumnIndex("image_id"));
            String name = locationCursor.getString(locationCursor
                    .getColumnIndex("name"));
            int latitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lat")) * 1E6);
            int longitude = (int) (locationCursor.getDouble(locationCursor
                    .getColumnIndex("lng")) * 1E6);
            items.add(new OverlayItem(new GeoPoint(latitude, longitude), image_id, name));
        }

Ответ 2 · Hong Duan

Возможно, вам следует написать некоторый код на php на стороне сервера базы данных и получить свою базу данных, а затем передать результаты в виде JSON. см. эту ссылку и это.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы