为了账号安全,请及时绑定邮箱和手机立即绑定

如何从数据库数组列表在 Google 地图上添加标记

如何从数据库数组列表在 Google 地图上添加标记

皈依舞 2024-01-05 15:06:40
我不知道如何从数据库中的数组列表在 GoogleMaps 上添加标记。我已经尝试了很多但没有任何效果。来自数据库的数组列表:public ArrayList<HashMap<String, String>> GetUserByUserId(int userid){    SQLiteDatabase db = this.getWritableDatabase();    ArrayList<HashMap<String, String>> userList = new ArrayList<>();    String query = "SELECT Loc, Lat, Long FROM "+ TABLE_Users;    Cursor cursor = db.query(TABLE_Users, new String[]{LocationName, Latitude, Longitude}, KEY_ID+ "=?",new String[]{String.valueOf(userid)},null, null, null, null);    if (cursor.moveToNext()){        HashMap<String,String> user = new HashMap<>();        user.put("Loc",cursor.getString(cursor.getColumnIndex(LocationName)));        user.put("Lat",cursor.getString(cursor.getColumnIndex(Latitude)));        user.put("Long",cursor.getString(cursor.getColumnIndex(Longitude)));        userList.add(user);    }    return  userList;}我的尝试@Overridepublic void onMapReady(GoogleMap googleMap) {    Database db = new Database(this);    ArrayList<HashMap<String, String>> userList = db.GetUsers();    mMap = googleMap;    double latitude = 0;    double longitude = 0;    for (int i = 0; i < userList.size(); i++) {        latitude = Double.parseDouble(userList.get(i).get("latitude").toString());        longitude = Double.parseDouble(userList.get(i).get("longitude").toString());        mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)));    }Google 地图应显示数据库中纬度和经度的所有标记
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

假设您的userList列表在打印时包含以下格式的位置:

Log.d("userListTag", userList.toString())

输出:

userListTag: [{Loc=California, Long=-117.985904, Lat=35.125801}, {Loc=Las Vegas, Long=-115.13983, Lat=36.169941}]

当我运行你的代码时,我收到此错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.String.toString()”

这是因为您试图获取“纬度”和“经度”,它们在userList. 尝试用“Lat”和“Long”替换它们,如下所示:

latitude = Double.parseDouble(userList.get(i).get("Lat").toString());
longitude = Double.parseDouble(userList.get(i).get("Long").toString());

我用上述更改测试了您的代码,两个示例标记在我的地图上都显示良好,所以我希望这对您有帮助!


查看完整回答
反对 回复 2024-01-05
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信