Google Maps v3 - Why is LatLngBounds.contains returning false
Solution 1
Ah, brilliant. The google.maps.LatLngBounds
constructor expects SouthWest and NorthEast LatLng
parameters. I have somehow bungled up my coordinates and passed in NorthWest and SouthEast instead!
var bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(54.69726685890506,-2.7379201682812226),
new google.maps.LatLng(55.38942944437183, -1.2456105979687226)
);
var center = bounds.getCenter(); // still returns (55.04334815163844, -1.9917653831249726)
var x = bounds.contains(center); // now returns true
Lesson learned: getCenter
doesn't care if you created the LatLngBounds
with NorthWest and SouthEast instead, but if you want contains
to return a useful answer you better pass in the suggested SouthWest and NorthEast!
Solution 2
I guess its easier to try this. It works for me without having to worry about NE orSW
var bounds = new google.maps.LatLngBounds();
bounds.extend(54.69726685890506,-2.7379201682812226);
bounds.extend(55.38942944437183, -1.2456105979687226);
var center = bounds.getCenter(); // still returns (55.04334815163844, -1.9917653831249726)
var x = bounds.contains(center); // now returns true
I know this post is old, but I came searching for answers here, so thought of updating from what I have learnt.
Solution 3
This is the way that it worked for me:
var bounds = new google.maps.LatLngBounds();
bounds.extend(54.69726685890506,-2.7379201682812226);
bounds.extend(55.38942944437183, -1.2456105979687226);
map.fitBounds(bounds);
Related videos on Youtube
Mario Menger
.. jQuery, JavaScript, C#, SQL, Ruby, XSLT, web applications
Updated on January 23, 2020Comments
-
Mario Menger about 4 years
I have the following code in which I would expect the contains method to return true, but it returns false:
var bounds = new google.maps.LatLngBounds( new google.maps.LatLng(55.38942944437183, -2.7379201682812226), new google.maps.LatLng(54.69726685890506, -1.2456105979687226) ); var center = bounds.getCenter(); // (55.04334815163844, -1.9917653831249726) var x = bounds.contains(center); // returns false
On the same page, where map is a reference to the Map object, the following code returns true as expected:
map.getBounds().contains(map.getBounds().getCenter())
Why might my call to
bounds.contains
be returning false? -
700 Software over 10 yearsYes, this is a much more productive and less confusing solution.
-
Sharky over 9 years
bounds.extend
needs a LatLng object, not just numbers. -
JBS over 8 yearsThis worked for me, but like Sharky said the coords must be a LatLng object, not just numbers. ie: ` myLatLang = new google.maps.LatLng(54.69726685890506,-2.7379201682812226); bounds.extend(myLatLang ); `
-
Jason over 4 yearsThanks. Now that's a gotcha to look out for!