J'ai plusieurs emplacements que je affiche ici les cartes de mon application Android. Il y a dans les 4 marqueurs, dont 3 marqueurs se trouvent dans une ville et 1 dans une autre ville. Actuellement, ma carte effectue un zoom sur un niveau où seuls les 3 marqueurs d'une ville sont visibles, alors que le 4ème n'est pas visible. Afin de voir ce marqueur, je dois effectuer un zoom arrière un niveau considérable.
Y a-t-il un moyen, je peux montrer tous les marqueurs dans les limites de la carte? P>
Voici mon code: - p> edit fort> p> avec l'aide de la réponse de Rahul, j'ai obtenu quelque chose comme ça: - P> for (int i = 0; i < tasks.size(); i++)
{
final GeoCoordinate latLng = m_getPosition(tasks[i]);
LatLng mLatLng = new LatLng(latLng.getLatitude(), latLng.getLongitude());
mLatLngBounds.include(mLatLng);
}
GeoCoordinate finalZoomLatLng = new GeoCoordinate(mLatLngBounds.build().getCenter().latitude, mLatLngBounds.build().getCenter().longitude);
new Handler().postDelayed(() -> {
m_map.setCenter(finalZoomLatLng, Map.Animation.NONE);
m_map.zoomTo(new GeoBoundingBox(finalZoomLatLng, 0.0f, 200000.0f), Map.Animation.NONE, Map.MOVE_PRESERVE_ORIENTATION);
}, 1000);
4 Réponses :
Vous devez utiliser la classe camociaUpdate à faire (probablement) tous les mouvements de carte programmatique. P>
Pour ce faire, calculez d'abord les limites de tous les marqueurs comme ci-dessous: P>
xxx pré> Obtenez ensuite un objet de description de mouvement en utilisant l'usine: CaméraUpdateFactory Lime ci-dessous: P> blockQuote>
xxx pré> Nous pouvons maintenant utiliser cela dans la carte comme ci-dessous: P> blockQuote>
xxx pré> blockquote>
Merci d'avoir répondu. J'utilise ici les cartes pour afficher les cartes et non sur Google Maps.
@Poojagaonkar ici quelle carte que vous utilisez est une carte personnalisée.?
Vous pouvez utiliser Latlngbounds. Builder () pour rendre plusieurs marqueurs à visualiser sous la carte.
Il a une méthode Inclure , qui vous permettent d'ajouter plusieurs emplacements Lat LNG. p> edit fort> p> Faire une nouvelle liste de marqueurs lorsque vous l'ajoutez à l'intérieur de la carte p> for (mark in markers) { // markers is a list of markers added in the map
locatebuilder.include(mark.position)
}
Merci pour la réponse rahul. Comment puis-je faire ce travail avec les cartes ici?
@Poojagaonkar J'ai ajouté des informations dans ma réponse. vérifie maintenant
Merci encore. Est-ce que Mmeap est votre objet ici Maps?
@Poojagaonkar Oui.
Je n'ai pas d'animatecamera () pour mon objet de carte ici. Dois-je inclure une dépendance pour cela?
@Poojagaonkar non, MMAP est l'objet GoogleMap et il a une méthode appelée Animatecamera
J'utilise ici mappe. Alors, comment puis-je l'utiliser avec des cartes ici?
@Poojagaonkar J'ai peur, je n'ai jamais utilisé ici maps
Même chose que j'ai réalisé en utilisant ceci. < img src = "https://i.stack.imgur.com/7zga8.png" alt = "Entrez la description de l'image ici"> p> p>
Selon ce numéro: https://github.com/heremaps / ICI-Android-SDK-Exemples / Problèmes / 176 Vous devez zoomer comme ceci:
private void navigateToMapMarkers(List<MapMarker> markers, int padding) { // find max and min latitudes and longitudes in order to calculate // geo bounding box so then we can map.zoomTo(geoBox, ...) to it. double minLat = 90.0d; double minLon = 180.0d; double maxLat = -90.0d; double maxLon = -180.0d; for (MapMarker marker : markers) { GeoCoordinate coordinate = marker.getCoordinate(); double latitude = coordinate.getLatitude(); double longitude = coordinate.getLongitude(); minLat = Math.min(minLat, latitude); minLon = Math.min(minLon, longitude); maxLat = Math.max(maxLat, latitude); maxLon = Math.max(maxLon, longitude); } GeoBoundingBox box = new GeoBoundingBox(new GeoCoordinate(maxLat, minLon), new GeoCoordinate(minLat, maxLon)); ViewRect viewRect = new ViewRect(padding, padding, m_map.getWidth() - padding * 2, m_map.getHeight() - padding * 2); m_map.zoomTo(box, viewRect, Map.Animation.LINEAR, Map.MOVE_PRESERVE_ORIENTATION); }
Cochez cette page thread