Je suis coincé à limiter le nombre de marqueurs que l'utilisateur peut taper sur la carte de Google Map
Le problème: Chaque fois que l'utilisateur appuyez sur Google Map, le marqueur continue de créer de nouveaux et les anciens ne disparaissent pas. P>
Mise à jour: Je pense que cela ne tombe pas dans l'autre. Parce que chaque fois que la fonction est appelée, il redémarre le processus. Ainsi, permettant au marqueur de créer constamment. P> Ce que j'ai essayé est d'attribuer une variable à vérifier si le marqueur a été créé.
Et si le marqueur existe, lors du prochain appuyez sur la carte, il est censé effacer la carte et le nouveau marqueur est au nouvel emplacement que l'utilisateur a exploité. P> P>
3 Réponses :
Je m'excuse pour mon mauvais anglais à l'avance
Je pense que votre problème vient de votre déclaration de variable. P>
Vous devriez essayer de:
Supprimer le MapMarkeCountount = 0 code> et faites-le booléen
Je pense que le programme exécute
mapmarkerketount = 0 code> chaque fois que vous ajoutez un marqueur donc je suis mon esprit Ça explique pourquoi vous ne pouvez pas supprimer l'ancien p>
depuis
Signification Pour dire que chaque fois que la fonction est appelée, il exécutera toujours la ligne par ligne du Ce que vous pouvez faire est, vous pouvez utiliser Remplacer Fun OnMapClick (Point: LATLNG) CODE>,
amusant onmapclick CODE>. P >
map.clear () code> avant de placer
maps.addambier () code> donc chaque fois que la fonction est appelée, il effacera la carte D'abord avant d'ajouter. P>
override fun onMapClick(point: LatLng){
map.clear() //above the adding of marker
val tappedLocation = LatLng(latitude,longitude)
map.addMarker(
MarkerOptions()
.position(tappedLocation)
.title("You have Clicked")
)
}
Notez que vous pouvez également mettre à jour la position d'un marqueur à l'aide du marqueur enregistré et d'appeler .Position code>.
Salut @andy, à quelle ligne appelleriez-vous le .position code>? J'ai essayé cette approche que vous avez mentionnée mais cela continue de me donner plusieurs marqueurs. Je crois que votre approche pourrait être une meilleure façon de le faire.
Dans ce code - éliminez les effectifs, définissez une variable de classe du résultat de addmarker code> (lorsque la variable de classe == null); Dans l'Europe (variable de classe! = NULL) Utilisez la classe variable de la classe et appelez. Position (TAPPHOUPATION).
Qu'est-ce que votre code est assigné mapmarkeketount = 0 code> à chaque fois que la carte est cliquée, même s'il peut y avoir un marqueur déjà sur la carte. Et à cause de cela, il tombera toujours dans le bloc de l'instruction IF, car CaractmarkeCount ne sera jamais égal à 1 lorsque la carte est cliquée. Faire cette affectation au tout début d'Oncreate serait une meilleure option.
Ou comme une personne ici l'a suggéré, une variable booléenne devrait être correcte pour que vous ne souhaitiez que vous souhaitiez avoir un marqueur sur la carte. Une implémentation:
var mapMarkerExists: Boolean = false
override fun onMapClick(point: LatLng) {
val tappedLocation = LatLng(latitude,longitude)
if(mapMarkerExists) {
map.clear()
map.addMarker(
MarkerOptions()
.position(tappedLocation)
.title("You have Clicked"))
}//check Marker Count
else {
map.addMarker(
MarkerOptions()
.position(tappedLocation)
.title("You have Clicked"))
mapMarkerExists = true
}
}