Карты Google v3 - почему LatLngBounds.contain возвращает false - PullRequest
22 голосов
/ 23 марта 2011

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

Ответы [ 3 ]

46 голосов
/ 23 марта 2011

Ах, гениально. Конструктор 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! *

13 голосов
/ 23 июля 2012

Я думаю, это проще попробовать.Это работает для меня, не беспокоясь о 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

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

1 голос
/ 23 января 2015

У меня так получилось:

var bounds = new google.maps.LatLngBounds();
bounds.extend(54.69726685890506,-2.7379201682812226);
bounds.extend(55.38942944437183, -1.2456105979687226); 
map.fitBounds(bounds);    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...