2012-12-06 16 views

Odpowiedz

24

Można użyć poniższy kod aby otrzymać lat/lng rozpiętość:

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; 

Mam nadzieję, że to pomaga.

+0

możemy dostać środku mapy widocznej części lat lng – Prasad

+0

Awesome! Dzięki. – Deciantis

6

Najpierw należy uzyskać rzutowanie za pomocą GoogleMap.getProjection(). Następnie możesz zadzwonić pod numer Projection.getVisibleRegion(), aby uzyskać WidocznyRegion, który ma LatLngBounds.

Powodem, dla którego szerokość geograficzna i długość geograficzna nie ma już sensu, jest to, że mapa może teraz być obracana i pochylana, a więc rzutnia nie jest już prostokątem wyrównanym do szerokości/długości geograficznej na mapie.

1

Oto odpowiedź

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

Dodaj znacznik tylko wtedy, gdy spadnie w regionie widzialnym

3

ten sposób działa na mnie:

CameraPosition camPos2 = mapa.getCameraPosition(); 
LatLng pos = camPos2.target; 
Toast.makeText(MainActivity.this,"Lat: " + pos.latitude + " - Lng: " +pos.longitude, Toast.LENGTH_LONG).show(); 


Ups, źle zrozumiałem pytanie, znaczyło to, że nie widziałem słowa "span". Według API prawidłowe byłoby:

najpierw uzyskać granic:

LatLngBounds bounds = gMap.getProjection().getVisibleRegion().latLngBounds; 

A potem zapytać, czy każdy punkt jest w granicach:

LatLng point = new LatLng (latitude, longitude); 
if(bounds.contains(point)){ 
    //do something 
} 
Powiązane problemy