Я знаю, что есть событие bounds_changed
, которое запускается, если границы были изменены, однако мне нужно знать, когда завершилось fitBounds (когда границы изменились или границы остались прежними).
У Google есть своего рода допуск, где, если границы изменились очень мало, это фактически не изменит границы /call bounds_changed. Мне нужно знать, когда это произойдет.
Я сделал это успешно с тайм-аутами, но он кажется взломанным и, возможно, подвержен некоторым ошибкам, когда bounds_changed запускает более 100 мс для запуска.
См. пример: http://jsbin.com/hipavurilo/3/edit?js,console,output
Любые лучшие решения?
Изменить: Если вы считаете, что просто проверка, что map.getBounds() совпадает с тем, что вы отправляете fitBounds(), тогда вы будете разочарованы тем, что результат привязки к границам обычно не близок к которые вы отправляете. Я написал эту функцию, думая, что это возможно [/p >
function boundsAreIdentical(bounds1, bounds2) {
if (!bounds1 || !bounds2) return false;
var tolerance = 0.00001;
console.log(bounds1.getNorthEast().lat(), bounds2.getNorthEast().lat());
console.log(bounds1.getNorthEast().lng(), bounds2.getNorthEast().lng());
console.log(bounds1.getSouthWest().lat(), bounds2.getSouthWest().lat());
console.log(bounds1.getSouthWest().lng(), bounds2.getSouthWest().lng());
if (
(Math.abs(bounds1.getNorthEast().lat() - bounds2.getNorthEast().lat()) <= tolerance) &&
(Math.abs(bounds1.getNorthEast().lng() - bounds2.getNorthEast().lng()) <= tolerance) &&
(Math.abs(bounds1.getSouthWest().lat() - bounds2.getSouthWest().lat()) <= tolerance) &&
(Math.abs(bounds1.getSouthWest().lng() - bounds2.getSouthWest().lng()) <= tolerance)) {
return true;
}
return false;
}