【问题标题】:Best and easiest method of passing map coordinates to Google maps [closed]将地图坐标传递到谷歌地图的最佳和最简单的方法[关闭]
【发布时间】:2015-08-22 17:47:46
【问题描述】:

您好,我开发了一个应用程序,它有 100 多个可以访问的位置,但目前我将它们设置在单独的类中,这意味着我有 100 多个位置地图类,这很懒惰而且远非理想。

我想创建一个数据库,我可以在其中存储位置并让地图类在需要时检索位置。

使用 sqlite 实现它的最佳和最简单的方法是什么。

到目前为止,我将经度和纬度设置为整数和主键的数据库,并将名称字段设置为标识符,但我正在努力解决如何执行 sqlite。

【问题讨论】:

  • 为什么不使用带有每个位置条目的 SQLite 数据库,并在加载时将它们加载到地图中??
  • 你会推荐在 Map 类中使用什么方法

标签: javascript java android sqlite google-maps


【解决方案1】:

如果您想严格遵守 Java 和 Android,甚至不使用 SQLite 的小 sn-ps,并且只想从项目的资源中加载它们,这不是很灵活,但也不是太难。因此,如果您只需要float 中的经纬度坐标,您可以简单地将它们加载到PointF 数组中,如果您还想要一个对应名称,您可以使用HashMap,否则您需要一个自定义坐标立即使用这些坐标进行上课或做任何您需要的事情。

所以对于 XML 部分,您基本上有两种选择:

  1. 您创建一个string-array 并使用分隔符在 名称,纬度,经度和其他你需要的东西。更容易 用 XML 组织,更难编码(parseFloat 可能会出错):

    XML(分隔符是“;”):

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="map_coordinates">
            <item>New York;40.7127837;-74.0059413</item>
            <item>London;51.5073509;-0.1277583</item>
            <item>Paris;48.856614;2.3522219</item>
        </string-array>
    </resources>
    

    检索到HashMap&lt;String,PointF&gt;的代码:

    HashMap<String, PointF> mapCoordinates = new HashMap<>();
    String[] mapStrings = getResources().getStringArray(R.array.map_coordinates);
    
    for (String mapString: mapStrings) {
        String[] mapStringParts = mapString.split(";");
        String name = mapStringParts[0];
        float longitude = Float.parseFloat(mapStringParts[1]);
        float lattitude = Float.parseFloat(mapStringParts[2]);
    
        /*If you want to do something with your entries here,
        you don't have to use HashMap, just an idea*/
        mapCoordinates.put(name, new PointF(longitude, lattitude));
    }
    
    //To find the location of a specific name use:
    PointF location = mapCoordinates.get("NAME");
    
  2. 您可以使用多个数组来存储名称、经度、纬度和 其他东西分开。有很多项目很难看出哪个 经度属于什么纬度,但不会有任何错误 可能,尽管您必须使用integer 而不是float,所以只需 将它们除以特定值以移动浮点数:

    XML:

    <string-array name="map_names">
        <item>New York</item>
        <item>London</item>
        <item>Paris</item>
    </string-array>
    <integer-array name="map_longitudes">
        <item>407127837</item>
        <item>515073509</item>
        <item>48856614</item>
    </integer-array>
    <integer-array name="map_lattitudes">
        <item>-740059413</item>
        <item>-1277583</item>
        <item>2352222</item>
    </integer-array>
    

    代码:

    HashMap mapCoordinates = new HashMap();

    String[] mapNames = getResources().getStringArray(R.array.map_names);
    int[] mapLongitudes = getResources().getIntArray(R.array.map_longitudes);
    int[] mapLatitudes = getResources().getIntArray(R.array.map_lattitudes);
    for (int i = 0; i < mapNames.length; i++) {
        String name = mapNames[i];
        float longitude = ((float) mapLongitudes[i]) / 1000000;
        float latitude = ((float) mapLatitudes[i]) / 1000000;
    
        //Again, do whatever you want with those values
        mapCoordinates.put(name, new PointF(longitude, latitude));
    }
    
    //To find the location of a specific name use:
    PointF location = mapCoordinates.get("NAME");
    

但我建议您研究 SQLite 数据库,因为这种存储表(例如带有名称的坐标)正是它们的用途。

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2014-10-27
    相关资源
    最近更新 更多