0
votes

Zoom ici mappe pour afficher tous les marqueurs Android

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> xxx pré>

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


1 commentaires

Cochez cette page thread


4 Réponses :


1
votes

Vous devez utiliser la classe camociaUpdate à faire (probablement) tous les mouvements de carte programmatique.

Pour ce faire, calculez d'abord les limites de tous les marqueurs comme ci-dessous: xxx

Obtenez ensuite un objet de description de mouvement en utilisant l'usine: CaméraUpdateFactory Lime ci-dessous: xxx

Nous pouvons maintenant utiliser cela dans la carte comme ci-dessous: xxx


2 commentaires

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



1
votes

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> xxx pré>

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


8 commentaires

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



1
votes

0 commentaires

0
votes

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


0 commentaires