61

i need to know long and lat of my four corners of current area as in this image

enter image description here

i have tried this but with no luck :

map.getBounds();

any help ?

Samy Massoud
  • 4,295
  • 2
  • 35
  • 48

3 Answers3

121

You are half way there. All you need to do is to get the map bounds and then extract (and properly use) the coordinates of the corners.

var bounds = map.getBounds();
var ne = bounds.getNorthEast(); // LatLng of the north-east corner
var sw = bounds.getSouthWest(); // LatLng of the south-west corder

You get north-west and south-east corners from the two above:

var nw = new google.maps.LatLng(ne.lat(), sw.lng());
var se = new google.maps.LatLng(sw.lat(), ne.lng());

Just keep in mind that the map has to be already initialized, otherwise the map bounds are null or undefined.

If you want to be updated about every change of the viewport, use idle event listener:

google.maps.event.addListener(map, 'idle', function(ev){
    // update the coordinates here
});
jeff
  • 8,300
  • 2
  • 31
  • 43
Tomik
  • 23,857
  • 8
  • 121
  • 100
  • 8
    Thank you for saving me from having to use my brain to find nw and se corners. – Frug Jul 15 '14 at 20:34
  • @Tomic So far i know googlemap api for iOS SDK is paid now so can you please give me any other solution? – Emon Jan 29 '19 at 04:13
2

In Android, you can find out corner LatLng (northeast, southwest) by this way, in the map, every time the camera listen(means gesture detect) they are called,

private var mapView: GoogleMap? = null

............

    mapView?.setOnCameraMoveStartedListener { reasonCode ->
        if (reasonCode == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
            val screenView: LatLngBounds =  mapView.getProjection().getVisibleRegion().latLngBounds
            var northeast=screenView.northeast
            var southwest=screenView.southwest
            var center=screenView.center
            
            
            Log.v("northeast LatLng","-:"+northeast)// LatLng of the north-east Screen
            Log.v("southwest LatLng","-:"+southwest)// LatLng of the south-west Screen
            Log.v("center LatLng","-:"+center)// LatLng of the center Screen
        }
    }
Shirsh Shukla
  • 5,491
  • 3
  • 31
  • 44
-2
**this is mapbox zoom example**
 map.on('zoom', (el) => {
        map.getBounds();
    });
Shijo Rs
  • 159
  • 1
  • 2