【问题标题】:how to show multiple markers in map from sqlite如何从sqlite在地图中显示多个标记
【发布时间】:2017-01-24 14:35:35
【问题描述】:

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

这是我的代码

                    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);

                 }

【问题讨论】:

  • 请告诉我在sqlite中存储数据后该怎么做

标签: java android sqlite google-maps-markers


【解决方案1】:

像这样更新你的代码,它会起作用:

    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); 

        }

【讨论】:

  • 好吧,别去任何地方,让我检查一下我正在处理它 ritenow..wait.. :)
  • 如何制作动画??
  • 您可以为任何一个值设置动画。现在您必须决定要在第一个、最后一个或中间设置动画的值。从您的位置列表中提取特定值并将其传递给动画方法
  • 另一种方法是根据您当前的位置制作动画,但您当前的位置可能不同,您所在的位置列表也可能不同
  • sruu 但我没明白.. :(
猜你喜欢
  • 2017-10-25
  • 2012-03-20
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多