从 SQLite 数据库获取纬度和经度以在 Android MapOverlay 中使用

发布于 2024-12-02 11:06:18 字数 438 浏览 0 评论 0原文

如果我将一堆位置的纬度和经度存储在 SQLite 数据库中,我将如何检索这些值并将它们分别放入 OverlayItem 类中以便在 Google 地图代码中使用?

数据库名称:database

表名称:place

place 表中的字段:

  • id
  • title
  • description
  • latitude
  • longitude

如何获取每个位置的纬度和经度数据并将其添加到 ArrayList itemOverlay 中?

您有什么想法或例子吗?非常感谢你

If I store the Latitude and Longitude of a bunch of locations in a SQLite Database, how would I retrieve these values and place them each in an OverlayItem class for use in Google's Map code?

Database name: database

Table name: place

Fields in place Table:

  • id
  • title
  • description
  • latitude
  • longitude

How do I get the latitude and longitude data of each location and add it to an ArrayList itemOverlay?

Do you have any ideas or an example? Thanks you so much

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰魂雪魄 2024-12-09 11:06:18

您可能想要执行如下查询:

SELECT title, description, latitude, longitude
FROM place

在 Android 中可以这样完成:

    /* 
       databaseObject = YourDbHelper#getReadableDatabase();
    */
    ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
    Cursor locationCursor = databaseObject.query("place", new String[]{
            "title", "description", "latitude", "longitude"}, null, null,
            null, null, null);

    locationCursor.moveToFirst();

    do {
        String title = locationCursor.String(locationCursor
                .getColumnIndex("title"));
        String description = locationCursor.String(locationCursor
                .getColumnIndex("description"));
        int latitude = (int) (locationCursor.getDouble(locationCursor
                .getColumnIndex("latitude")) * 1E6);
        int longitude = (int) (locationCursor.getDouble(locationCursor
                .getColumnIndex("longitude")) * 1E6);

        items.add(new OverlayItem(new GeoPoint(latitude, longitude), title,
                description));
    } while (locationCursor.moveToNext());

您需要将这些值乘以 1E6,因为 Android 使用纬度/经度值的整数表示。如果您在填充数据库时已经考虑到了这一点,请跳过乘法并使用 locationCursor.getInt(...)

You would want to do a query like this:

SELECT title, description, latitude, longitude
FROM place

Which can be done in Android like this:

    /* 
       databaseObject = YourDbHelper#getReadableDatabase();
    */
    ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
    Cursor locationCursor = databaseObject.query("place", new String[]{
            "title", "description", "latitude", "longitude"}, null, null,
            null, null, null);

    locationCursor.moveToFirst();

    do {
        String title = locationCursor.String(locationCursor
                .getColumnIndex("title"));
        String description = locationCursor.String(locationCursor
                .getColumnIndex("description"));
        int latitude = (int) (locationCursor.getDouble(locationCursor
                .getColumnIndex("latitude")) * 1E6);
        int longitude = (int) (locationCursor.getDouble(locationCursor
                .getColumnIndex("longitude")) * 1E6);

        items.add(new OverlayItem(new GeoPoint(latitude, longitude), title,
                description));
    } while (locationCursor.moveToNext());

You need to multiply the values by 1E6 because Android uses an integer representation of the lat/long values. If you already took care of this when populating the database, skip the multiplication and use locationCursor.getInt(...).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文