В последнее время множество разработчиков веб-сайтов используют для своих проектов HTML, CSS, и Javascript фреймворк — Twitter Bootstrap.
В этой заметке я покажу пару примеров использования данного фреймворка для вывода карты Google Maps в модальном окне (Bootstrap Modal).
В начале нам нужно скачать архив с самим фреймворком и установить его.
Переходим на страницу по адресу http://twitter.github.io/bootstrap/
На ней мы можем сделать выбор, какой набор файлов загружать:
нажать на кнопку "Download Bootstrap". На момент написания этой статьи версия v2.3.1.
перейти на Гитхаб (ссылка GitHub project) и оттуда скачать zip архив.
В первом случае вы скачаете архив, в котором будут лежать папки: css, js, img. В папке "css" уже будут лежать скомпилированные файлы стилей css.
Во-втором случае в архиве будут исходники на less + тот же набор что и в первом случае, а также примеры страниц.
Изначально bootstrap написан на less (язык стилей). То есть, для того чтобы получить файлы *.css — нужно файлы less скомпилировать в файлы css. Первый вариант нам и предлагает скачать уже готовые файлы css.
! Важно обратить внимание, что только в браузере FireFox будет работать less локально (т.е. если будете запускать со своего компьютера, без веб сервера).
И так, архив с файлами скачан и распакован.
В результате у нас есть папка bootstrap, а в ней:
— css
— img ( 2 файла с белыми и черными иконками)
— js (файл javascript для тех элементов bootstrap, которые его требуют: например, раскрывающийся список, галерея картинок и т.д.).
Теперь рассмотрим первый пример использования Bootstrap и Google Maps API (V3) — показываем модальное окно с картой при клике на кнопке «Показать».
Мы заходим на страницу и кликаем по кнопке «Показать» — появляется модальное окно с картой
При нажатии на кнопку «Закрыть» — окно закрывается.
Рассмотрим код примера.
В самом начале html-файла в разделе HEAD мы подключаем JavaScript-библиотеку jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> |
А затем файлы CSS-стилей и JS фреймворка Twitter Bootstrap
<link rel="stylesheet" href="css/bootstrap.min.css"> <script src="js/bootstrap.min.js"></script> |
Далее API Google Maps API (V3)
<script src="http://maps.google.com/maps/api/js?sensor=false"></script> |
Добавляем немного стилей для модального окна с картой
<style>
#myModal label { width: auto!important; display:inline!important; }
#myModal img { max-width: none!important; }
#mapcanvas {width:520px; height:400px}
#mapcanvas label { width: auto!important; display:inline!important; }
#mapcanvas img { max-width: none!important; }
</style> |
Далее подключаем скрипт для поддержки функций HTML5 в браузерах IE версий 6 — 8
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
В разделе BODY мы размещаем код для кнопки и модального окна
<!-- Кнопка -->
<p><a href="#myModal" role="button" data-toggle="modal" class="btn btn-primary">Показать</a></p>
<!-- Модальное окно -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Нижегородский театр «Комедія»</h3>
</div>
<div class="modal-body">
<div id="mapcanvas"></div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Закрыть</button>
</div>
</div> |
И в самом конце JavaScript-код для формирования и вывода карты.
myLatlng = new google.maps.LatLng(56.32039899999999,44.002245000000016);
centerLatlng = new google.maps.LatLng(56.32039899999999,44.002245000000016);
//start of modal google map
$("#myModal").modal({
show: false
}).on("shown", function()
{
var map_options = {
zoom: 17,
mapTypeControl: false,
center:centerLatlng,
panControl:false,
rotateControl:false,
streetViewControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("mapcanvas"), map_options);
var contentString = '<div id="mapInfo">'+
'<p><strong>Нижегородский театр «Комедія»</strong><br>'+
'г.Нижний Новгород, ул. Грузинская, д. 23</p>'+
'<a rel="nofollow" href="http://comedia.nnov.ru/" target="_blank">Перейти на сайт</a>'+
'</div>';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"Нижегородский театр «Комедія»",
maxWidth: 200,
maxHeight: 200
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
infowindow.open(map,marker);
}); |
В начале мы задаем координаты центра карты centerLatlng и позицию маркера myLatlng.
Затем, если модальное окно открыто определяем начальные параметры карты, добавляем на нее маркер и открываем балун с информацией.
Второй пример — это показ местоположения нескольких мест на одной странице в модальнм окне.
Мы заходим на страницу и видим список кинотеатров
При клике по одной из ссылок в колонке «Расположение» — показывается модальное окно с указанием местоположения данного кинотеатра.
Код примера отличается от предыдущего.
В начале раздела BODY мы размещаем код таблицы со ссылками и модального окна
<table class="table table-condensed">
<thead>
<tr>
<th>Кинотеатр</th>
<th>Расположение</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Синема Парк в ТЦ «Фантастика»</strong></td>
<td><i class="icon-map-marker"></i> <a class="openmodal" href="#mapmodals" role="button" data-toggle="modal" data-id="Синема Парк в ТЦ «Фантастика»">ул. Родионова, 187</a></td>
</tr>
<tr>
<td><strong>Синема Парк DeLuxe IMAX в ТЦ «Седьмое небо»</strong></td>
<td>
<i class="icon-map-marker"></i> <a class="openmodal" href="#mapmodals" data-id="Синема Парк DeLuxe IMAX в ТЦ «Седьмое небо»" role="button" data-toggle="modal">ул. Бетанкура 1</a>
</td>
</tr>
<tr>
<td><strong>Синема СТАР в ТЦ «Рио»</strong></td>
<td>
<i class="icon-map-marker"></i> <a class="openmodal" href="#mapmodals" data-id="Синема СТАР в ТЦ «Рио»" role="button" data-toggle="modal">Московское шоссе, 12</a>
</td>
</tr>
</tbody>
</table>
<!-- MAPS -->
<div class="modal hide fade" id="mapmodals">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal">Закрыть</button>
<div id="map_canvas" style="width:530px; height:300px"></div>
</div>
<div class="modal-footer">
<h3 id="myCity"></h3>
</div> |
Далее JavaScript-код для формирования и вывода карты.
При открытии модального окна по ссылке, мы получаем ее data-id
var myMapId = $(this).data('id'); |
И в зависимости от полученного параметра, вызываем функцию mapsDisplay, передавая в нее соответствующие параметры.
А эта функция формирует карту Google Maps с маркером в нужной точке.
Для корректного отображения карты, вызывается событие resize
$('#mapmodals').on('shown', function () {
google.maps.event.trigger(map, 'resize');
map.setCenter(new google.maps.LatLng(longs, latts));
}) |
Надеюсь эти примеры помогут Вам в реализации проектов совместного использования API Google Maps API V3 и Twitter Bootstrap.
При написании заметки использовался код примеров из статьи «Bootstrap and Google Maps API (V3)».


