Ceci est ma première fois de travail avec Google Maps
donc désolé si c'est un problème de débutant. Je travaille sur une application qui se connecte à un capteur portable. Le capteur envoie des données de pollution toutes les 2 minutes. Chaque fois que je reçois de nouvelles données, un marqueur est placé sur Google Maps et je veux montrer les données dans la fenêtre d'information des marqueurs afin que vous puissiez voir comment la pollution diffère selon l'endroit où vous êtes.Android/Google Maps: Comment obtenir différentes fenêtres d'informations pour différents marqueurs?
Mon problème est que dès maintenant, toutes les fenêtres d'information de mes marqueurs sont mises à jour avec les données les plus récentes. Je dois faire en sorte que chaque marqueur possède sa propre fenêtre d'information séparée avec des données uniques.
Je pense que j'ai besoin de mettre en œuvre OnInfoWindowClickListener
en quelque sorte et aussi que j'ai besoin de l'ID de chaque marqueur. J'ai essayé d'examiner les réponses dans d'autres discussions et jusqu'à présent je n'ai pas compris comment je devrais résoudre ce problème.
apprécierais toute aide possible
Ceci est mon code en ce moment.
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
....
/* Here we create the infoWindow **/
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
public View getInfoWindow(Marker arg0) {
View v = getLayoutInflater().inflate(R.layout.custom_infowindow, null);
TextView tv = (TextView) v.findViewById(R.id.infoText);
tv.setText("CO2 data: "+String.valueOf(co_mV) + "mV" +"\n" + "N2 data: "+String.valueOf(no2_mV) +" mV");
return v;
}
public View getInfoContents(Marker arg0) {
return null;
}
});
}
....
@Override
public void onLocationChanged(Location location) {
if (!initiateApp) {
if(location.distanceTo(mLastLocation) < 20) {
markerArrayList.get(markerArrayList.size()-1).remove();
markerArrayList.remove(markerArrayList.size()-1);
Toast.makeText(
getApplicationContext(),
"Reading to close to last reading, replace last reading", Toast.LENGTH_SHORT).show();
}
}
if (markerArrayList.size() == 3) {
markerArrayList.get(0).remove();
markerArrayList.remove(0);
}
//Place current location marker
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA));
mCurrLocationMarker = mMap.addMarker(markerOptions);
markerArrayList.add(mCurrLocationMarker);
mLastLocation = location;
Log.d("ADebugTag", "Value: " + Double.toString(location.getLatitude()));
Log.d("ADebugTag", "Value: " + Double.toString(location.getLongitude()));
//move map camera
if(initiateApp){
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15));
}
initiateApp = false;
boolean contains = mMap.getProjection()
.getVisibleRegion()
.latLngBounds
.contains(latLng);
if(!contains){
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
}
}
EDIT Les données que je veux montrer est "co_mV" et "no2_mV".
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
try {
JSONObject parser = new JSONObject(values[0]);
JSONObject d = parser.getJSONObject("d");
co_mV = d.getInt("co_mV");
no2_mV = d.getInt("no2_mV");
} catch (JSONException e) {
e.printStackTrace();
}
newData();
//response received from server
Log.d("CO2", values[0]);
long timeStamp = System.currentTimeMillis()/1000L;
time=new java.util.Date((long)timeStamp*1000);
//process server response here....
}
}
Merci pour votre réponse. Je ne comprends pas ce que fait SetModels? Est-ce là où je devrais mettre les données co et no2? – Kspr
Aussi qu'est-ce que place_distance? – Kspr
place_distance est une vue de texte dans la fenêtre d'information pour montrer le text.its approprié dans la disposition de la fenêtre d'information. Et les modèles de jeu seront utilisés pour mettre à jour vos données dès que vous avez de nouvelles données, le nombre de données dans ce modèle est égal à non de infowindow avec des données –