Azure Maps Resize + Javascript не заставит его работать
Я построил вид MVC Asp.net, где у меня есть карта из карт Azure. У меня также есть боковая панель, которую я могу свернуть, чтобы стать меньше.
Код для свертывания панели следующий (и включен в файл _layout):
function collapse2() {
$('#sidebar').toggleClass('active');
$('#content').toggleClass('active');
}
window.onload = function () {
$("#sidebarCollapse").on('click', collapse2);
}
В представлении я добавил следующий javascript.
function resize() {
map.map.resize();
}
$(document).ready(function () {
GetMap();
$(document).click('#resizea', resize);
$(document).click('#sidebarCollapse', resize);
});
Когда я нажимаю кнопку с идентификатором sidebarCollapse, боковая панель сворачивается, но размер карты не изменяется (она не растягивается на 100 %). Но если я щелкну на теге ссылки с идентификатором resizea после свертывания, карта изменит размер до правильного размера.
Кто-нибудь может привести меня в правильном направлении?
Спасибо заранее!
0 ответов
Как я уже упоминал в комментариях, я подозреваю, что размер div еще не изменился. HTML не предоставляет никаких событий, когда размер элемента DOM отличается от размера окна. Чтобы узнать, изменяется ли что-то, вы должны следить за этим, что является болью для себя. Поскольку вы используете jquery, вы можете использовать функцию изменения размера: https://api.jquery.com/resize/ Она работает с divs.
Если это не сработает. Похоже, проблема заключается в том, когда вы нажимаете кнопку сброса боковой панели. Я предполагаю, что эта кнопка также сворачивает боковую панель, возможно, с отдельным событием щелчка. Попробуйте объединить их вместе и вызвать функцию изменения размера после вызова кода для свертывания боковой панели. Если у вас есть анимация при свертывании, это может не сработать, в этом случае оберните функцию изменения размера setTimeout и используйте промежуток времени, который немного больше, чем анимация.