【问题标题】:changing marker camera position in every 10 seconds without refreshing the googlemap每 10 秒更改一次标记相机位置而不刷新 googlemap
【发布时间】:2015-12-31 11:47:31
【问题描述】:

我目前正在开发一个可以跟踪位置的 Android 应用。 我的应用有两个部分:

  1. 将数据(经度、纬度)更新到服务器
  2. 每 10 秒从服务器接收一次数据并将其显示在 googlemap(marker)

我的第一部分已经完成,第二部分我从服务器获取了一个值。但是,当我 sync 我的地图使用新值时,问题就出现了——每次刷新整个地图时。

如果有人对如何实现这种能够运行 android 应用程序并看到标记动态变化的效果有任何见解,将不胜感激!

public class user_page extends FragmentActivity implements
OnMapReadyCallback {
double longi=0,lati=0;
int id=0;
MapFragment mapFragment;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.tim);

    try
    {
       mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);

    }
    catch(Exception e)
    {
        Log.d("error",e.toString());
    }
    final Handler h = new Handler();
    h.postDelayed(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub

            new logincheck().execute();

                Toast.makeText(getApplicationContext(),"longi = " + longi + "latii = " +lati,Toast.LENGTH_SHORT).show();
            h.postDelayed(this, 10000);
        }
    }, 10000);


}


@Override
public void onMapReady(GoogleMap googleMap) {


    LatLng current = new LatLng(longi, lati);

    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(current, 13));

    googleMap.addMarker(new MarkerOptions()
            .title(""+id)
            .position(current));



}
// end of class user_page

public class logincheck extends AsyncTask<String, Void, String>  {


    HashMap<String, String> data;
    ArrayList<HashMap<String, String>> dataFromdb;

    public logincheck()
    {
        dataFromdb = new ArrayList<HashMap<String, String>>();
    }


    @Override
    protected String doInBackground(String... params) {
        id = getIntent().getIntExtra("id",0);
        StringBuilder result = new StringBuilder("");
        String line ="";

        HttpClient client = new DefaultHttpClient();
        HttpGet httpget = new HttpGet("mylink?id=" +id);

        try
        {
            HttpResponse responce = client.execute(httpget);
            BufferedReader in = new BufferedReader(new InputStreamReader(responce.getEntity().getContent()));
            while((line= in.readLine()) != null)
            {
                result.append(line);
            }
            in.close();
        }
        catch(Exception e)
        {
            Log.e("error in do in background", e.getMessage());
        }

        return result.toString();
    }


    protected void onPostExecute(String result) {
        ArrayList<HashMap<String, String>> mydata = parseJson(result);
        for(int i=0;i < mydata.size();i++)
        {
            longi = Double.parseDouble(mydata.get(i).get("logi"));
            lati = Double.parseDouble(mydata.get(i).get("lati"));

        }
        try {
            mapFragment.getMapAsync(user_page.this);
        }
        catch(Exception e)
        {
            Log.d("error",e.toString());
        }

    }

    private ArrayList<HashMap<String, String>> parseJson(String stringdata)
    {
        dataFromdb.clear();
        try
        {


            JSONArray jsonarray = new JSONArray(stringdata);
            JSONObject jsondata = null;

            for(int i=0;i<jsonarray.length();i++)
            {
                NumberFormat n = NumberFormat.getInstance();
                data = new HashMap<String, String>();
                jsondata = jsonarray.getJSONObject(i);
                data.put("logi",jsondata.getString("logi"));
                data.put("lati",jsondata.getString("lati"));

                dataFromdb.add(data);
            }

        }
        catch(JSONException e)
        {
            Log.e("error in parsing ",e.getMessage());
        }

        return dataFromdb;
    }

 }
}

【问题讨论】:

    标签: android google-maps google-maps-markers


    【解决方案1】:

    尝试使用

       googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 13));
    

    当您收到新的 lat 和 lng 时。这应该从当前位置平滑地动画到新位置

    【讨论】:

    • 你能给我编辑的代码吗?我想我把它放错地方了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多