J'ai cherché de l'aide pour implémenter OnMarkerClickListener mais rien de ce que j'ai trouvé n'a fonctionné. Ceci est mon marqueur ci-dessous et lorsque vous cliquez dessus, il ne change que de couleur (bleu clair). Je le cherche pour ouvrir une plus grande fenêtre afin que je puisse mettre plus d'informations. Est-ce possible?
googlemap.addMarker(new MarkerOptions()
.position(new LatLng(49.378,-0.3904))
.title("Hello World")
.snippet("This is my test app")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
Le marqueur fonctionne bien au-dessus de ma carte, mais maintenant je voudrais cliquer sur le marqueur et pour qu'il ouvre une nouvelle activité/page ou une fenêtre plus grande, ce qui est toujours plus facile à travailler. Comme je suis un vrai novice dans la création d'applications, si quelqu'un qui a réussi à obtenir un exemple de travail, veuillez mettre un lien ou du code.
Merci d'avance!
Modifier:
À partir du didacticiel qui a été suggéré, j'ai modifié une partie de MainActivity.Java.
J'ai ajouté dans OnMarkerClickListener et j'ai choisi d'ajouter des méthodes non implémentées à la classe publique
public class MainActivity extends Activity implements LocationListener, OnMarkerClickListener {
Sous private void setUpMap (), j'ai ajouté à mon code: private Marker myMarker, le setonMarkerclick listener et myMarker =,:
private Marker myMarker;
{
googlemap.setOnMarkerClickListener(this);
myMarker = googlemap.addMarker(new MarkerOptions()
.position(new LatLng(LatLng))
.title("Hello World")
.snippet("My First App")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
}
Dans la méthode non implémentée en bas, j'ai:
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
return false;
Que dois-je changer dans la partie publique Boolean OnMarkerClick? Je ne reçois aucune erreur mais cela ne fonctionne tout simplement pas. Que dois-je ajouter ou modifier?
Toute aide est appréciée!
Événements de clic de marqueur
Ne pas accrocher au marqueur après avoir cliqué sur Android map v2
Citant le post ci-dessus
Vous pouvez utiliser un OnMarkerClickListener
pour écouter les événements de clic sur le marqueur. Pour définir cet écouteur sur la carte, appelez GoogleMap.setOnMarkerClickListener (OnMarkerClickListener). Lorsqu'un utilisateur clique sur un marqueur, onMarkerClick (Marker) sera appelé et le marqueur sera passé en argument. Cette méthode renvoie un booléen qui indique si vous avez consommé l'événement (c'est-à-dire que vous souhaitez supprimer le comportement par défaut). S'il renvoie false, le comportement par défaut se produira en plus de votre comportement personnalisé. Le comportement par défaut d'un événement de clic de marqueur consiste à afficher sa fenêtre d'informations (si disponible) et à déplacer la caméra de sorte que le marqueur soit centré sur la carte.
Utilisez OnMarkerClickListener sur votre marqueur.
Vérifiez le lien pour les extraits de code
API Google Maps v2: comment rendre les marqueurs cliquables?
Exemple: fonctionne sur mon téléphone
Source de marqueur, destination; GoogleMap mMap; MMap = ((MapFragment) getFragmentManager (). FindFragmentById (R.id.map )). getMap (); source = mMap.addMarker (nouvelles options de marqueur () .position (sc) .title ("MyHome") . snippet ("Bangalore") .icon (BitmapDescriptorFactory.fromResource (R.drawable.pin))); destination = mMap.addMarker (new MarkerOptions () .position (lng) .title ("MapleBear Head Office") .snippet ("Jayanager") .icon (BitmapDescriptorFactory.fromResource (R.drawable.pin ))); mMap.setOnMarkerClickListener (marker -> { if (marker.getTitle (). equals ("MyHome")) // si la source du marqueur est cliquée Toast.makeText (MainActivity.this, marker.getTitle (), Toast.LENGTH_SHORT) .show (); // afficher le toast Return true; }) ;
Ce code gère l'événement de clic du créateur et charge une nouvelle mise en page (XML) avec quelques informations:
/**
* adding individual markers, displaying text on on marker click on a
* bubble, action of on marker bubble click
*/
private final void addLocationsToMap() {
int i = 0;
for (Stores store : storeList) {
LatLng l = new LatLng(store.getLatitude(), store.getLongtitude());
MarkerOptions marker = new MarkerOptions()
.position(l)
.title(store.getStoreName())
.snippet("" + i)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
googleMap.addMarker(marker);
++i;
}
googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
try {
popUpWindow.setVisibility(View.VISIBLE);
Stores store = storeList.get(Integer.parseInt(marker
.getSnippet()));
// set details
email.setText(store.getEmail());
phoneNo.setText(store.getPhone());
address.setText(store.getAddress());
// setting test value to phone number
tempString = store.getPhone();
SpannableString spanString = new SpannableString(tempString);
spanString.setSpan(new UnderlineSpan(), 0,
spanString.length(), 0);
phoneNo.setText(spanString);
// setting test value to email
tempStringemail = store.getEmail();
SpannableString spanString1 = new SpannableString(tempStringemail);
spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0);
email.setText(spanString1);
storeLat = store.getLatitude();
storelng = store.getLongtitude();
} catch (ArrayIndexOutOfBoundsException e) {
Log.e("ArrayIndexOutOfBoundsException", " Occured");
}
}
});
}
Si vous avez besoin de l'événement Click in a market, ce code est la solution.
private GoogleMap mGoogleMap;
mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker arg0) {
if(arg0 != null && arg0.getTitle().equals(markerOptions2.getTitle().toString())); // if marker source is clicked
Toast.makeText(menu.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
return true;
}
});
bonne chance