如何在sqlite中显示地图中的多个标记

时间:2016-09-16 11:20:15

标签: java android sqlite google-maps-markers

让不同的用户latLng作为json对象,并使用该用户名在sqlite中存储和更新它,现在我想要检索用户的说明并将这些用户显示到map ..并在消息到达时更新他们的位置那个用户......怎么做

这是我的代码

                    JSONObject  jsnobject = new JSONObject(Message);
                     JSONObject msg = jsnobject.getJSONObject("msg");

                     JSONObject header = msg.getJSONObject("Header"); 
                      clientID=header.getString("from");


                     JSONObject location = header.getJSONObject("Location"); 
                     LAT = location.getString("Lat");
                      LNG = location.getString("Long");
                      SPEED = location.getString("Speed");

                     } catch (JSONException e) {
                            e.printStackTrace();
                        }






                //   for(int i =0 ;i<abc;i++){


                    List<String> a= db.getID();

                    if(a.contains(clientID)){

                        db.update(clientID, LAT, LNG, SPEED);
                    }else{

                        db.insert(clientID, LAT, LNG, SPEED);

                    }

这就是放置标记的方式

                 List<String> a= db.getID();

                 for(int i=0;i<a.size();i++){ 



                        String id=a.get(i);

                    List<String> latllng= db.getLatLng(id);
                    latllng.toString();
                    String[] Latlng=latllng.toString().replace("[", "").replace("]", "").split(",");
                    double latitude = Double.parseDouble(Latlng[0]);
                    double longitude = Double.parseDouble(Latlng[1]);
                    googleMap.clear();   


                    if (marker == null)
                    pos=new LatLng(latitude,longitude);
                    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                            pos, 17));
                    marker = googleMap.addMarker(new MarkerOptions()
                            .position(pos));
                    marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.my_marker));
                    marker.setTitle(id);
                    pos = new LatLng(latitude, longitude);

                    animateMarker(marker, pos, hideMarker);

                 }

1 个答案:

答案 0 :(得分:0)

像这样更新您的代码,它将起作用:

    List<String> a = db.getID();
    googleMap.clear();
        for (int i = 0; i < a.size(); i++) {

            String id = a.get(i);

            List<String> latllng = db.getLatLng(id);
            latllng.toString();
            String[] Latlng = latllng.toString().replace("[", "")
                    .replace("]", "").split(",");
            double latitude = Double.parseDouble(Latlng[0]);
            double longitude = Double.parseDouble(Latlng[1]);
            // googleMap.clear(); <<< comment out this code else all of your previous marker get cleared

            if (marker == null)
                pos = new LatLng(latitude, longitude);
             // googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(pos, 17)); << you can not move map for each and every marker you are adding
            marker = googleMap.addMarker(new MarkerOptions().position(pos));
            marker.setIcon(BitmapDescriptorFactory
                    .fromResource(R.drawable.my_marker));
            marker.setTitle(id);
            pos = new LatLng(latitude, longitude);
            animateMarker(marker, pos, hideMarker); 

        }