如何从 LatLngBounds 获取哪个区域有更多标记?
how to get which area has more markers from a LatLngBounds?
我想显示位于印度和美国的所有标记。这次 LatLngBounds 将显示缩放级别为 0,并且地图可见区域介于印度和美国之间。有什么解决办法吗?
对此的解决方案是,如果在 INDIA 中提供更多标记,则只需为 INDIA else AMERICA 制作动画。但如何从经纬度方向了解更多标记位于一个国家/地区?
只需在将标记添加到地图时计数即可。 AMERICA
和 INDIA
定义为 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));
}
}
我想显示位于印度和美国的所有标记。这次 LatLngBounds 将显示缩放级别为 0,并且地图可见区域介于印度和美国之间。有什么解决办法吗? 对此的解决方案是,如果在 INDIA 中提供更多标记,则只需为 INDIA else AMERICA 制作动画。但如何从经纬度方向了解更多标记位于一个国家/地区?
只需在将标记添加到地图时计数即可。 AMERICA
和 INDIA
定义为 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));
}
}