web-dev-qa-db-fra.com

code pour ajouter des marqueurs à la carte à l'aide de Android google maps v2

J'ai des valeurs lat et long de database.how pour afficher des marqueurs basés sur des valeurs lat et long en utilisant Android google map api v2.In original Android google maps, nous affichons des marqueurs basé sur le concept itemoverlay. En v2, je ne sais pas comment afficher les marqueurs.

    dbAdapter.open();
        Cursor points = dbAdapter.clustercall(Btmlft_latitude, toprgt_latitude,
                Btmlft_longitude, toprgt_longitude, gridsize1);
        int c = points.getCount();
        Log.d("count of points", "" + c);

        if (points != null) {
            if (points.moveToFirst()) {
                do {

                    int latitude = (int) (points.getFloat(points
                            .getColumnIndex("LATITUDE")) * 1E6);
                    int longitude = (int) (points.getFloat(points
                            .getColumnIndex("LONGITUDE")) * 1E6);

                    mapView.addMarker(new MarkerOptions().position(
                            new LatLng(latitude, longitude)).icon(
                            BitmapDescriptorFactory.defaultMarker()));

                } while (points.moveToNext());

            }
        }
        points.close();
        dbAdapter.close();

C'est mon code.Je reçois valeurs lat et long de la base de données, mais comment ajouter des marqueurs basés sur les valeurs lat et long à mapper.

J'ai lu le Android google maps api v2.In qui n'a donné que données statiquement ajoutées des marqueurs

14
Kumar Kalluri

Vous devez utiliser la méthode GoogleMap.addMarker(MarkerOptions); Je l'ai expliqué dans un tutoriel sur mon blog: http://bon-app-etit.blogspot.be/2012/12/add-informationobject -to-marker-in.html

Sur ce blog, vous trouverez d'autres articles concernant la nouvelle API Maps:

  • Déplacer la carte vers l'emplacement actuel ou un emplacement
  • Créez l'InfoWindow personnalisée
  • Associer des géodonnées ou des objets à un marqueur
12
dumazy

Utilisez la classe Marker

Une icône placée à un point particulier de la surface de la carte. Une icône de marqueur est dessinée orientée contre l'écran de l'appareil plutôt que sur la surface de la carte; c'est-à-dire qu'il ne changera pas nécessairement l'orientation en raison des rotations, de l'inclinaison ou du zoom de la carte.

Un marqueur a les propriétés suivantes:

Ancre

Le point sur l'image qui sera placé à la position LatLng du marqueur. Cette valeur par défaut est de 50% à partir de la gauche de l'image et au bas de l'image.

Position

La valeur LatLng pour la position du marqueur sur la carte. Vous pouvez modifier cette valeur à tout moment si vous souhaitez déplacer le marqueur.

Titre

Une chaîne de texte qui s'affiche dans une fenêtre d'informations lorsque l'utilisateur appuie sur le marqueur. Vous pouvez modifier cette valeur à tout moment.

Extrait

Texte supplémentaire affiché sous le titre. Vous pouvez modifier cette valeur à tout moment.

Icône

Une image bitmap affichée pour le marqueur. Si l'icône n'est pas définie, une icône par défaut s'affiche. Vous pouvez spécifier une coloration alternative de l'icône par défaut à l'aide de defaultMarker (float). Vous ne pouvez pas changer l'icône une fois que vous avez créé le marqueur.

état de glissement

Si vous souhaitez autoriser l'utilisateur à faire glisser le marqueur, définissez cette propriété sur true. Vous pouvez modifier cette valeur à tout moment. La valeur par défaut est vraie.

Visibilité

Par défaut, le marqueur est visible. Pour rendre le marqueur invisible, définissez cette propriété sur false. Vous pouvez modifier cette valeur à tout moment.

GoogleMap map = ... // get a map.
   // Add a marker at San Francisco.
   Marker marker = map.addMarker(new MarkerOptions()
       .position(new LatLng(37.7750, 122.4183))
       .title("San Francisco")
       .snippet("Population: 776733"));
27
K_Anas

Je suppose que le problème est que vous multipliez vos valeurs de latitude/longitude par 1E6 au lieu de les diviser par 1E6. Si vos valeurs stockées provenaient de GeoPoints, cela pourrait être votre problème. Sinon, la façon dont vous ajoutez les marqueurs est correcte et devrait fonctionner.

c'est-à-dire que les valeurs lat/lng que vous passez à new LatLng () devraient ressembler à 45,4, -95,5 PAS 45400000, -95500000

Découvrez le code suivant:

//mMap is a GoogleMap and point is a GeoPoint
this.mMap.addMarker(getMarker(point, drawableId))

...

public MarkerOptions getMarker(GeoPoint point, int drawableId)
{
    return new MarkerOptions()
    .position(new LatLng(point.getLatitudeE6() / 1000000.0, point.getLongitudeE6() / 1000000.0))
    .icon(BitmapDescriptorFactory.fromResource(drawableId));
}
4
DiscDev