В настоящее время я разрабатываю приложение для Android, которое может отслеживать положение. Есть две части моего приложения:изменение положения камеры маркера каждые 10 секунд без обновления googlemap
- обновление данных (долгота, широта) на сервер
- получать данные с сервера каждые 10 секунд и показать его на Googlemap (маркер)
Моя первая часть выполнена, и во второй части я получаю значение с сервера. Но проблема возникает, когда я 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;
}
}
}
Можете ли вы дать мне отредактированный код, я думаю, что я помещаю его в неправильное место – honda