如何从LatLngBounds获得更多标记?

时间:2016-11-11 07:50:16

标签: android google-maps google-maps-markers

我想显示位于INDIA和AMERICA的所有标记。这次LatLngBounds将显示缩放级别为0并映射INDIA和AMERICA之间的可见区域。这有什么解决方案吗? 如果在印度展示更多标记物,那么这个解决方案就是这个,然后只为INDIA别名AMERICA制作动画。但如何了解更多标记位于一个国家/地区?

1 个答案:

答案 0 :(得分:1)

将标记添加到地图时只需计算。将AMERICAINDIA定义为LatLngBounds

private void addMarkers(List<LatLng> positions) {
    int markersInAmerica = 0;
    int markersInIndia = 0;

    for (LatLng position : positions) {
        googleMap.addMarker(new MarkerOptions().position(position));
        if (AMERICA.contains(position)) {
            markersInAmerica++;
        } else if (INDIA.contains(position)) {
            markersInIndia++;
        }
    }

    if (markersInAmerica > markersInIndia) {
        googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(AMERICA, 0));
    } else {
        googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(INDIA, 0));
    }
}

如果您想首先添加所有标记,然后将地图居中,您可以定义List<Marker>,将Marker添加到地图和列表中,然后遍历列表以使其居中图:

private List<Marker> markers = new ArrayList<>();

private void addMarkers(List<LatLng> positions) {
    for (LatLng position : positions) {
        markers.add(googleMap.addMarker(new MarkerOptions().position(position)));
    }
}

private void centerMap() {
    int markersInAmerica = 0;
    int markersInIndia = 0;

    for (Marker marker : markers) {
        if (AMERICA.contains(marker.getPosition())) {
            markersInAmerica++;
        } else if (INDIA.contains(marker.getPosition())) {
            markersInIndia++;
        }
    }

    if (markersInAmerica > markersInIndia) {
        googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(AMERICA, 0));
    } else {
        googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(INDIA, 0));
    }
}