Подтвердить что ты не робот

Google Maps v3 - Почему LatLngBounds.contains возвращает false

У меня есть следующий код, в котором я ожидал бы, что метод contains вернет true, но возвращает 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

На той же странице, где map - ссылка на объект Map, следующий код возвращает true, как ожидалось:

map.getBounds().contains(map.getBounds().getCenter())

Почему мой вызов bounds.contains должен возвращать false?

4b9b3361

Ответ 1

Ах, блестящий. Конструктор google.maps.LatLngBounds ожидает параметры SouthWest и NorthEast LatLng. Я каким-то образом испортил свои координаты и вместо этого перешел в NorthWest и SouthEast!

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

Извлеченный урок: getCenter не волнует, если вы создали LatLngBounds с NorthWest и SouthEast вместо этого, но если вы хотите, чтобы contains возвращал полезный ответ, лучше перейдите в предлагаемые SouthWest и NorthEast!

Ответ 2

Думаю, его проще попробовать. Это работает для меня, не беспокоясь о NE или SW

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

Я знаю, что этот пост старый, но я пришел искать ответы здесь, поэтому подумал о том, чтобы обновить то, что я узнал.

Ответ 3

Вот так оно и работает для меня:

var bounds = new google.maps.LatLngBounds();
bounds.extend(54.69726685890506,-2.7379201682812226);
bounds.extend(55.38942944437183, -1.2456105979687226); 
map.fitBounds(bounds);