0
votes

Autoriser l'utilisateur à placer 1 marqueur sur Google Map uniquement

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.

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. xxx

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é.


0 commentaires

3 Réponses :


0
votes

Je m'excuse pour mon mauvais anglais à l'avance

Je pense que votre problème vient de votre déclaration de variable.

Vous devriez essayer de: Supprimer le MapMarkeCountount = 0 et faites-le booléen Je pense que le programme exécute mapmarkerketount = 0 chaque fois que vous ajoutez un marqueur donc je suis mon esprit Ça explique pourquoi vous ne pouvez pas supprimer l'ancien xxx p > avec ce code, La première fois que vous n'ajouterez qu'un nouveau marqueur. et après avoir effacé l'ancien marqueur et placez le nouveau chaque fois que vous touchez l'écran


0 commentaires

0
votes

depuis Remplacer Fun OnMapClick (Point: LATLNG) CODE>,

Signification Pour dire que chaque fois que la fonction est appelée, il exécutera toujours la ligne par ligne du amusant onmapclick CODE>. P >

Ce que vous pouvez faire est, vous pouvez utiliser 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")

            )
}


3 commentaires

Notez que vous pouvez également mettre à jour la position d'un marqueur à l'aide du marqueur enregistré et d'appeler .Position .


Salut @andy, à quelle ligne appelleriez-vous le .position ? 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 (lorsque la variable de classe == null); Dans l'Europe (variable de classe! = NULL) Utilisez la classe variable de la classe et appelez. Position (TAPPHOUPATION).



0
votes

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
    }
}


0 commentaires