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?
Ответы
Ответ 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);