#css #google-maps #overflow #jquery-mobile
#css #google-карты #переполнение #jquery-mobile
Вопрос:
У меня есть небольшое картографическое приложение, над которым я работаю, которое встраивает карту Google внутрь «страницы» jQuery Mobile. Я хочу, чтобы карта занимала всю горизонтальную ширину экрана, но не более. Проблема, с которой я сталкиваюсь, заключается в том, что карта «переполняется» за пределы страницы с правой стороны, возможно, на 5%. Это можно увидеть на http://www.codeemporium.com/experiments/map6.html (извините, пока не отображается в Firefox), где вы заметите, что в нижнем правом углу, где на карте обычно написано «Условия использования», она была обрезана. Фрагмент HTML-кода для основной «страницы» jQuery Mobile, которую я использую, выглядит следующим образом (как видно из исходного кода вышеупомянутой страницы): `
<div data-role="page" style="width:100%; height:100%;" id="main_page">
<div data-role="content" id="map_canvas" style="width:100%;height:80%;">
</div>
<div data-role="footer" style="width:100%;height:20%;">
<div data-role="navbar">
<ul>
<li><a href="#welcome" data-icon="info" data-iconpos="notext"></a></li>
<li><a href="#settings" data-icon="gear" data-iconpos="notext"></a></li>
<li><a href="#tracking" data-icon="alert" data-iconpos="notext"></a></li>
<li><a href="#search" data-icon="search" data-iconpos="notext"></a></li>
</ul>
</div><!-- /navbar -->
</div>
`
Карта внедряется в map_canvas
div. Используя Chrome developer на моем компьютере, я вижу, что ширина холста карты в конечном итоге составляет 1295 пикселей, что немного больше, чем разрешение моего экрана в 1280 пикселей за вычетом полосы прокрутки и так далее. Проблема, с которой я сталкиваюсь, заключается в том, что у меня очень мало опыта в устранении неполадок, что, как я полагаю, здесь является проблемой стиля и может даже не относиться непосредственно к приведенному выше фрагменту кода. В дополнение к конкретному решению этой проблемы, если бы кто-нибудь мог предложить, как отлаживать такого рода вещи каким-то методичным образом, это также было бы высоко оценено.
Ответ №1:
Когда мы столкнулись с этой проблемой, нам пришлось создать эту функцию:
function resizeMap () {
$('#map_canvas').height($(window).height()-$('#map_head').height());
// in your case #map_head would be .ui-navbar I believe
}
$(window).resize(function(){resizeMap(); map.setCenter(latlng)});
вы можете запустить resizeMap() в $(document).готово () или при инициализации вашей карты.