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