【问题标题】:Save a LatLng array into a database将 LatLng 数组保存到数据库中
【发布时间】:2018-05-08 07:19:38
【问题描述】:

我想将我的曲目保存为数据库中的 LatLng 列表。为此,我打算将其转换为字符串,然后保存在字符串字段中。

为了转换,我尝试过使用这段代码:

final ArrayList<LatLng> waypoints = new ArrayList<>();
waypoints.addAll(Stream.of(mFavorites)
         .map(i -> coordToLatLng(i.Latitude, i.Longitude))
         .toList());


Toast.makeText(this, waypoints, Toast.LENGTH_SHORT).show();

然后将作为 waypoints.toString 保存到数据库。

有什么更好的建议可以解决我的需求吗?

【问题讨论】:

    标签: android arrays string list


    【解决方案1】:

    你可以试试这个方法:

         /**
         * TODO: this is used for set value into waypoint arraylist
         * TODO: but your case you are already having value into one arraylist
         */
        final ArrayList<LatLng> waypoints = new ArrayList<>();
        LatLng latlong = new LatLng();
        latlong.setLatitute("13.041695199971244");
        latlong.setLongitude("77.61311285197735");
        waypoints.add(latlong);
        waypoints.add(latlong);
        //////////////////////////////////////
    
        /**
         * TODO: this is approach to convert list data into string array
         * TODO: you can modified your data according to your format.
         */
        String[] mValue = new String[waypoints.size()];
        for(int i = 0; i<waypoints.size(); i++){
           mValue[i] = waypoints.get(i).getLatitute()+","+waypoints.get(i).getLongitude();
        }
        /////////////////////////////////////////
    
        /**
         * TODO: final you can see this result and can store into database
         */
        Log.e("value:",""+Arrays.toString(mValue));
    

    LatLng.java

    public class LatLng {
            String latitute;
            String longitude;
    
            public String getLatitute() {
                return latitute;
            }
    
            public void setLatitute(String latitute) {
                this.latitute = latitute;
            }
    
            public String getLongitude() {
                return longitude;
            }
    
            public void setLongitude(String longitude) {
                this.longitude = longitude;
            }
        }
    

    结果:

    E/值:: [13.041695199971244,77.61311285197735, 13.041695199971244,77.61311285197735]

    【讨论】:

    • 我尝试将我的数组转换为可以保存在 SQLite 中的字符串。
    【解决方案2】:

    如果您想在数据库中存储您的纬度和经度,请使用此代码,它将帮助您:

    只需添加 LatLng 变量并保存到数据库中:

    String s=String.valueOf(latLng.latitude + "," + latLng.longitude)
    

    并保存它。

    当想要获取和使用时,请使用此代码:

    DatabaseHelper db=new DataBaseHelper(context);
         String[] latlong = db.getLatLngValue.split(",");
                    double latitude = Double.parseDouble(latlong[0]);
                    double longitude = Double.parseDouble(latlong[1]);
                   LatLng latLng = new LatLng(latitude, longitude);
    

    打印这个 latLng 变量:

    它会帮助你

    【讨论】:

    • 我需要在同一字段中保存完整路径,而不仅仅是位置。
    • 您应该在数据库中存储多个纬度,经度,并在显示路径期间通过谷歌方向api绘制纬度经度之间的路径
    • 您也可以将LatLng类型的arraylist存储在数据库中(转换为字符串格式)并显示路径,通过google方向api绘制纬度经度之间的路径。
    • 我需要保存所有的arraylist 而不仅仅是一个位置
    • 如果您可以将单个位置保存在数据库中,这样您也可以在数据库中保存更多的值,将值一一插入,并在获取值时使用循环和数组列表,它将帮助您
    【解决方案3】:

    尝试以下方法:

    LatLng latLng;
    Double l1=latlng.latitude;
    Double l2=latlng.longitude;
    String coordl1 = l1.toString();
    String coordl2 = l2.toString();
    

    1 - 将您的 lat/long 转换为 Double,并将它们分开;

    2 - 将 Double 转换为字符串。

    【讨论】:

    • 我需要保存所有的arraylist 而不仅仅是一个位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    相关资源
    最近更新 更多