Как получить диапазон широты/долготы в Google Map V2 для Android
У меня есть задача переместить мое приложение в Google Maps Android API V2. Теперь мне нужно получить диапазон широты/долготы. Я использовал MapView.getLatitudeSpan()
и MapView.getLongitudeSpan()
в предыдущих версиях API. Теперь я не могу найти что-то подобное в V2.
Есть ли у кого-то такая же проблема?
Ответы
Ответ 1
Вы можете использовать следующий код для получения диапазона lat/lng:
VisibleRegion vr = mMap.getProjection().getVisibleRegion();
double left = vr.latLngBounds.southwest.longitude;
double top = vr.latLngBounds.northeast.latitude;
double right = vr.latLngBounds.northeast.longitude;
double bottom = vr.latLngBounds.southwest.latitude;
Надеюсь, это поможет.
Ответ 2
Сначала получите проекцию, используя GoogleMap.getProjection()
. Затем вы можете вызвать Projection.getVisibleRegion()
, чтобы получить VisibleRegion, который имеет LatLngBounds.
Причина, по которой диапазон LatitudeSpan и Longitude больше не имеет смысла, состоит в том, что теперь карту можно поворачивать и наклонять, и поэтому окно просмотра больше не является прямоугольником с широтой/долготой на карте.
Ответ 3
Этот способ работает для меня:
CameraPosition camPos2 = mapa.getCameraPosition();
LatLng pos = camPos2.target;
Toast.makeText(MainActivity.this,"Lat: " + pos.latitude + " - Lng: " +pos.longitude, Toast.LENGTH_LONG).show();
Забастовкa >
Упс, я неправильно понял вопрос, я имею в виду, что я не видел слово "span".
В соответствии с API правильным будет:
Сначала получите оценки:
LatLngBounds bounds = gMap.getProjection().getVisibleRegion().latLngBounds;
И затем спросите, находится ли какая-либо точка в границах:
LatLng point = new LatLng (latitude, longitude);
if(bounds.contains(point)){
//do something
}
Ответ 4
Вот ответ
LatLngBounds bounds = googleMap.getProjection().getVisibleRegion().latLngBounds;
if (bounds.contains(ROMA)) {
marker = googleMap.addMarker(
new MarkerOptions()
.position(ROMA)
.title("Hello")
.snippet("Nice Place")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
);
System.out.println("Marker added");
}
Добавить маркер только тогда, когда он попадает в видимую область