gpt4 book ai didi

android - 如何从 LatLngBounds 获取哪个区域有更多标记?

转载 作者:行者123 更新时间:2023-11-29 01:14:49 25 4
gpt4 key购买 nike

我想显示位于印度和美国的所有标记。这次 LatLngBounds 将显示缩放级别为 0,并且 map 可见区域介于印度和美国之间。有什么解决办法吗?对此的解决方案是,如果在 INDIA 中提供更多标记,则只需为 INDIA else AMERICA 制作动画。但是如何从经纬度上知道更多的标记位于一个国家呢?

最佳答案

只需在将标记添加到 map 时计数即可。与 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));
}
}

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

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

关于android - 如何从 LatLngBounds 获取哪个区域有更多标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40543417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com