14 votes

code pour ajouter des marqueurs à la carte en utilisant Android google maps v2

Je dispose des valeurs lat & long de la base de données.comment afficher des marqueurs basés sur les valeurs lat & long en utilisant l'api Android google map v2.dans l'original Android google maps,nous affichons des marqueurs basés sur le concept de l'itemoverlay. Dans la 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. J'obtiens valeurs lat&long de la base de données Mais comment ajouter des marqueurs basés sur les valeurs lat &long à la carte.

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

27voto

K_Anas Points 13724

Utiliser le Marqueur Classe

Une icône placée à un point particulier de la surface de la carte. L'icône d'un marqueur est dessinée par rapport à l'écran de l'appareil et non par rapport à la surface de la carte, c'est-à-dire qu'elle ne change pas nécessairement d'orientation en cas de rotation, d'inclinaison ou de zoom de la carte.

Un marqueur possède les propriétés suivantes :

Ancre

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

Position

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

Titre

Chaîne de texte affichée dans une fenêtre d'information lorsque l'utilisateur touche 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 est affichée. Vous pouvez spécifier une couleur alternative à l'icône par défaut en utilisant defaultMarker(float). Vous ne pouvez pas modifier l'icône une fois que vous avez créé le marqueur.

Statut de la traînée

Si vous souhaitez permettre à l'utilisateur de faire glisser le marqueur, attribuez la valeur true à cette propriété. Vous pouvez modifier cette valeur à tout moment. La valeur par défaut est true.

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"));

12voto

dumazy Points 2457

Vous devez utiliser la méthode GoogleMap.addMarker(MarkerOptions); J'ai expliqué cela 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 à l'endroit actuel ou à un autre endroit
  • Créer l'InfoWindow personnalisée
  • Associer des géodonnées ou des objets à un marqueur

4voto

DiscDev Points 8087

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 les valeurs stockées proviennent de GeoPoints, c'est peut-être là le problème. Sinon, la façon dont vous ajoutez les marqueurs est correcte et devrait fonctionner.

Par exemple, les valeurs lat/lng que vous transmettez à new LatLng() devraient ressembler à 45.4,-95.5 NOT 45400000,-95500000

Consultez 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));
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X