I am using Google Maps v2 in my application. When the user pans or zooms on the screen I would like to get the area of the map based on which I want to fetch the POI only in the screen view part.
I went through the documentation but could not find any help.
            Asked
            
        
        
            Active
            
        
            Viewed 2.1k times
        
    27
            
            
         
    
    
        JJD
        
- 50,076
- 60
- 203
- 339
 
    
    
        Harsha M V
        
- 54,075
- 125
- 354
- 529
2 Answers
61
            You need to use Projection and VisibleRegion classes in order to get visible LatLng region.
So your code would look something like:
LatLngBounds curScreen = googleMap.getProjection()
    .getVisibleRegion().latLngBounds;
 
    
    
        JJD
        
- 50,076
- 60
- 203
- 339
 
    
    
        Pavel Dudka
        
- 20,754
- 7
- 70
- 83
- 
                    i tried this i am getting only northwest and southwest value. any idea how to get the other two values ? – Harsha M V Feb 05 '13 at 05:57
- 
                    2northeast and southwest you mean? If so - that's how the bounding box is represented (top-right and bottom-left corners of the viewport). Given these two points it is pretty straight forward to calculate other 2 points. Right? The simplest way to check whether certain POI(LatLng) is within the box - is to call `LatLngBounds.contains(LatLng point)` interface. However, displaying big amount of Markers on a map is a separate story – Pavel Dudka Feb 05 '13 at 08:17
- 
                    how can i get get the other two points, am sorry am confused. Ant about showin a lot of markers is there any optimized way of doing that ? – Harsha M V Feb 05 '13 at 08:22
- 
                    6well, top-left corner would have `[curScreen.southwest.longitude;curScreen.northeast.latitude]` coordinates and bottom-right corner would have `[curScreen.northeast.longitude;curScreen.southwest.latitude]` coordinates. You can treat latitude as `Y` axis and longitude as `X` axis – Pavel Dudka Feb 05 '13 at 08:34
- 
                    as far as I know, there is no native way to clusterize markers on a map. There is a good article though about this topic: https://developers.google.com/maps/articles/toomanymarkers – Pavel Dudka Feb 05 '13 at 08:34
- 
                    @HarshaMV your question seem doesn't signifies your reputations – stackunderflow Mar 05 '15 at 04:16
- 
                    @Dagon see the date it was asked ;-) – Harsha M V Mar 05 '15 at 05:39
- 
                    @HarshaMV i see. that was toooo long ago. is that the day when you're still at primary school? actually i refer to your question comment. anyway thank you for your post and also for the answer. it solved my today's problem – stackunderflow Mar 05 '15 at 05:45
- 
                    It is returning 0.0 both latitude and longitude,any idea?? – kgandroid Jul 16 '15 at 05:55
- 
                    @kgandroid usually it means that current location is not known at the moment – Pavel Dudka Jul 16 '15 at 06:12
- 
                    1Plase have a look: http://stackoverflow.com/questions/31446401/latlng-bound-returns-0-0 – kgandroid Jul 16 '15 at 06:25
1
            
            
        In Android(Kotlin) you can find LatLng this way, in every time zoom or. gesture detect
private var mMap: GoogleMap? = null
..........
    mMap?.setOnCameraMoveStartedListener { reasonCode ->
        if (reasonCode == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
            val curScreen: LatLngBounds =  mMap!!.getProjection().getVisibleRegion().latLngBounds
            var northeast=curScreen.northeast
            var southwest=curScreen.southwest
            var center=curScreen.center
            Log.v("northeast LatLng","-:"+northeast)
            Log.v("southwest LatLng","-:"+southwest)
            Log.v("center LatLng","-:"+center)
        }
    }
 
    
    
        Shirsh Shukla
        
- 5,491
- 3
- 31
- 44