我想創建一個地圖,顯示Google Map
上指定人物的位置。我已經建立了一個帶有MySQL數據庫的Web服務器。每當android應用程序運行時,它都會將用戶的當前位置存儲在數據庫中。之後,每當onLocationChanged()
被稱爲,該應用程序獲取(例如,10公里)的位置數據(例如,50公里)到用戶位置。使用這些位置座標,我在地圖上添加了多個標記。現在我面臨以下問題:Google Maps android:多個標記的實時更新位置
當10人的位置發生變化的數據,正在創建,而不是原來的標記改變其位置的新標誌。
當從數據庫中刪除10人中的任何人的位置數據時,相應的標記仍保留在地圖上。
注:我使用JSON來從服務器的數據和分析在IntentService
JSON數據創建標記。
這是怎麼了JSON解析:
@Override
protected void onHandleIntent(Intent intent) {
if (intent != null) {
String json_result = intent.getExtras().getString("JSON Data");
try {
JSONObject jsonObject = new JSONObject(json_result);
JSONArray jsonArray = jsonObject.getJSONArray("location data");
int counter = 0;
String name, lat, lng;
double dist;
int arrayLength;
while (counter < jsonArray.length()) {
JSONObject object = jsonArray.getJSONObject(counter);
name = object.getString("name");
lat = object.getString("lat");
lng = object.getString("lng");
dist = object.getDouble("distance");
arrayLength = jsonArray.length();
Intent jsonDataIntent = new Intent();
jsonDataIntent.setAction(Constants.STRING_ACTION);
jsonDataIntent.putExtra(Constants.STRING_NAME, name);
jsonDataIntent.putExtra(Constants.STRING_LAT, lat);
jsonDataIntent.putExtra(Constants.STRING_LNG, lng);
jsonDataIntent.putExtra(Constants.STRING_DIST, dist);
jsonDataIntent.putExtra(Constants.STRING_LENGTH, arrayLength);
jsonDataIntent.putExtra(Constants.STRING_ID, counter);
LocalBroadcastManager.getInstance(this).sendBroadcast(jsonDataIntent);
counter++;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
這裏是如何我已經使用解析的JSON數據來創建標記:
private class ParseJSONDataReceiver extends BroadcastReceiver {
Marker usersMarker;
double lat, lng, dist;
int numberOfConnections, id;
HashMap<Marker,Integer> hashMap = new HashMap<>();
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
String name = intent.getExtras().getString(ParseJSONDataService.Constants.STRING_NAME);
lat = Double.parseDouble(intent.getExtras().getString(ParseJSONDataService.Constants.STRING_LAT));
lng = Double.parseDouble(intent.getExtras().getString(ParseJSONDataService.Constants.STRING_LNG));
dist = intent.getExtras().getDouble(ParseJSONDataService.Constants.STRING_DIST);
numberOfConnections = intent.getExtras().getInt(ParseJSONDataService.Constants.STRING_LENGTH);
id = intent.getExtras().getInt(ParseJSONDataService.Constants.STRING_ID) + 1;
usersMarker = mMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, lng))
.title("Name: " + name)
.snippet(id + ": Distance: " + dist + " Km")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
hashMap.put(usersMarker,id);
}
}
}
誰能幫我解決以上問題? ??
嗨安東尼奧。非常感謝您的回覆。我已經能夠使用您的建議代碼成功更新標記的位置。但是,我不清楚應該如何使用「刪除標記」代碼。我的意思是如何知道某個特定條目是否已從MySQL數據庫中刪除?我嘗試使用'if(marker.getposition == null)',但它不起作用。 @antonio –