#bootstrap-4 #here-api
#bootstrap-4 #здесь-api
Вопрос:
Я пытаюсь включить здесь карты в свое веб-приложение. Карта должна отображаться после того, как пользователь нажал кнопку / ссылку, чтобы развернуть сворачиваемую панель начальной загрузки.
Если я помещу div, содержащий карту, за пределы сворачиваемой панели, она будет работать.
Мой код в jsfiddlehttps://jsfiddle.net/Lymbzfx2 /
Мой HTML
<p>
<a class="btn btn-primary" data-toggle="collapse" href="#collapseExample" role="button">
Link with href
</a>
</p>
<div class="collapse" id="collapseExample">
<div class="card card-body">
<div id="map" class="chart"></div> <!-- Map should be here -->
</div>
</div>
Мой JS-код
var platform = new H.service.Platform({
'app_id': '{App_ID}',
'app_code': '{APP_Code}'
});
// Obtain the default map types from the platform object:
var defaultLayers = platform.createDefaultLayers();
// Instantiate (and display) a map object:
var map = new H.Map(
document.getElementById('map'),
defaultLayers.normal.map, {
zoom: 10,
center: {
lat: 52.5,
lng: 13.4
}
});
Я ожидаю, что карта будет показана после того, как я нажму ссылку «Link with href». Однако некоторые SVG-файлы из Here Maps отображаются, а фрагменты карты не загружены
Редактировать: добавлен скриншот текущего состоянияhttps://i.imgur.com/6WuV4gm.png (Отсутствует репутация для публикации изображения)
Комментарии:
1. возьмите экран из раздела консоли, проверьте элемент вашего браузера, чтобы показать ошибки, и отправьте для проверки
2. На консоли нет ошибок. Холст из Here Maps инициализируется шириной 0 пикселей и высотой 0 пикселей. imgur.com/THW5P45.png
Ответ №1:
Холст карты HERE динамически принимает ширину и высоту своего родительского div (в данном случае: <div id="map" class="chart"></div>
).
Итак, сначала вам нужно добавить width
и height
в раздел map div вот так:
<div id="map" style="width:100%; height:400px" class="chart"></div>
.
Во-вторых, вы должны отметить, что дочерние элементы внутри сворачиваемого элемента начальной загрузки будут иметь ширину и высоту, равные нулю, при сворачивании ( display: none
) и их фактические значения при развертывании ( display: block
).
Таким образом, ЗДЕСЬ карта должна быть нарисована, когда сворачиваемый элемент развернут (чтобы карта могла иметь ненулевые ширину и высоту). Вы можете использовать jQuery, чтобы проверить, нажата ли ваша кнопка / ссылка и виден ли раздел «карта».
Комментарии:
1. Как вы и предлагали, я добавил click eventlistener на кнопку. только в этом случае я добавил карту. Тогда все было так, как ожидалось.
2. @JB можете ли вы объяснить, что вы сделали для своей карты, чтобы заставить ее работать, например, вставьте код, если это возможно, в моем случае я работаю с bootstrap modal и заранее благодарю
3. Я только что добавил карту после создания элемента, который содержит карту.