Обзор
В этом руководстве показано, как отображать информацию из KML-файла на карте Google и в боковой панели. Для получения дополнительной информации об использовании KML-файлов на картах ознакомьтесь с руководством по KML-слоям . Попробуйте щелкнуть маркер на карте ниже, чтобы увидеть данные в боковой панели.
В разделе ниже представлен весь код, необходимый для создания карты и боковой панели.
var map;
var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml';
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(-19.257753, 146.823688),
zoom: 2,
mapTypeId: 'terrain'
});
var kmlLayer = new google.maps.KmlLayer(src, {
suppressInfoWindows: true,
preserveViewport: false,
map: map
});
kmlLayer.addListener('click', function(event) {
var content = event.featureData.infoWindowHtml;
var testimonial = document.getElementById('capture');
testimonial.innerHTML = content;
});
}<div id="map"></div> <div id="capture"></div>
html, body {
height: 370px;
padding: 0;
margin: 0;
}
#map {
height: 360px;
width: 300px;
overflow: hidden;
float: left;
border: thin solid #333;
}
#capture {
height: 360px;
width: 480px;
overflow: hidden;
float: left;
background-color: #ECECFB;
border: thin solid #333;
border-left: none;
}<!-- Replace the value of the key parameter with your own API key. --> <script async src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"> </script>
Попробуйте сами!
Вы можете поэкспериментировать с этим кодом в JSFiddle, нажав на значок <> в правом верхнем углу окна кода.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>KML Click Capture Sample</title>
<style>
html, body {
height: 370px;
padding: 0;
margin: 0;
}
#map {
height: 360px;
width: 300px;
overflow: hidden;
float: left;
border: thin solid #333;
}
#capture {
height: 360px;
width: 480px;
overflow: hidden;
float: left;
background-color: #ECECFB;
border: thin solid #333;
border-left: none;
}
</style>
</head>
<body>
<div id="map"></div>
<div id="capture"></div>
<script>
var map;
var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml';
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(-19.257753, 146.823688),
zoom: 2,
mapTypeId: 'terrain'
});
var kmlLayer = new google.maps.KmlLayer(src, {
suppressInfoWindows: true,
preserveViewport: false,
map: map
});
kmlLayer.addListener('click', function(event) {
var content = event.featureData.infoWindowHtml;
var testimonial = document.getElementById('capture');
testimonial.innerHTML = content;
});
}
</script>
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
</body>
</html>Начиная
Вот этапы создания карты и боковой панели для этого урока:
Настройка KML-файла для импорта
Ваш KML-файл должен соответствовать стандарту KML. Подробную информацию об этом стандарте можно найти на веб-сайте Open Geospatial Consortium . Документация Google по KML также описывает этот язык и предлагает как справочную, так и концептуальную документацию для разработчиков.
Если вы только учитесь и у вас нет KML-файла, вы можете:
Для этого урока используйте следующий KML-файл:
https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kmlНайдите KML-файл в интернете. Вы можете использовать оператор поиска
filetypeв Google.Замените слово
velodromesлюбым другим поисковым запросом или вовсе опустите этот запрос, чтобы найти все KML-файлы.
Если вы создаёте собственный файл, код в этом примере предполагает следующее:
- Вы разместили файл в открытом доступе в интернете. Это требование необходимо для всех приложений, загружающих KML-файлы в
KMLLayer, чтобы серверы Google могли найти и получить доступ к содержимому для отображения на карте. - Файл находится на странице, не защищенной паролем.
- Ваши объекты содержат информационное окно. Вы можете поместить это содержимое в элемент
descriptionили включить его с помощью элементаExtendedDataи замены сущности (подробнее см. ниже). Оба варианта доступны через свойствоinfoWindowHtmlобъекта.
Элементы ExtendedData
В этом руководстве KML-файл содержит информацию о характеристиках объекта в элементе ExtendedData . Чтобы добавить эту информацию в описание объекта, используйте замену сущности , которая по сути является переменной в теге BalloonStyle .
В таблице ниже приведен код для этого раздела.
| Код и описание | |
|---|---|
| В KML-файле содержится единственный элемент Style , который применяется ко всем меткам.Этот элемент Style присваивает текстовому элементу BalloonStyle значение #[video] .Формат $[x] указывает парсеру KML искать элемент Data с именем video и использовать его в качестве текста всплывающего окна. |
| Каждый Placemark содержит элемент ExtendedData , который хранит элемент Data . Обратите внимание, что каждый Placemark имеет один элемент Data с атрибутом name равным video .В этом руководстве в качестве значения текста всплывающего окна для каждого элемента Placemark используется встроенное видео с YouTube. |
Более подробную информацию о замене сущностей можно найти в главе «Добавление пользовательских данных» документации KML.
Отображение KML-слоя
Инициализация карты
В этой таблице поясняется код данного раздела.
| Код и описание | |
|---|---|
| Для отображения KML-файла на карте необходимо сначала создать карту. Этот код создает новый объект Google Map, указывает, где его центрировать и масштабировать, и прикрепляет карту к div .Чтобы узнать больше об основах создания карты Google, прочтите руководство «Добавление карты Google на ваш сайт» . |
Создание KML-слоя
В этой таблице объясняется код, создающий KMLLayer.
| Код и описание | |
|---|---|
| Создает новый объект KMLLayer для отображения вашего KML-файла. |
| Конструктор KMLLayer задает URL-адрес вашего KML-файла. Он также определяет свойства объекта KMLLayer, которые выполняют следующие действия:
|
Отображение данных в боковой панели
В этом разделе описываются настройки, позволяющие отображать содержимое информационного окна в боковой панели при щелчке по объекту на карте. Это делается следующим образом:
- Отслеживание события клика по любому из элементов KMLLayer.
- Получение данных о выбранном элементе.
- Вывод этих данных в боковую панель.
Добавление обработчика событий
Google Maps предоставляет функцию для отслеживания и реагирования на события пользователя на карте, такие как клики или нажатия клавиш клавиатуры. Для таких событий click добавляется обработчик событий.
В таблице ниже приведен код для этого раздела.
| Код и описание | |
|---|---|
| Обработчик событий kmlLayer.addListener фокусируется на следующем:
|
Вывод данных KML-объекта в боковую панель
На данном этапе обучения вы уже отслеживали события кликов по объектам слоя. Теперь вы можете настроить приложение так, чтобы оно выводило данные объекта и содержимое информационного окна в боковую панель.
В таблице ниже приведен код для этого раздела.
| Код и описание | |
|---|---|
| Записывает содержимое информационного окна в переменную. |
| Определяет div , в который нужно записать данные, и заменяет содержащийся в нем HTML-код содержимым функции. |
| Эти строки кода становятся функцией внутри конструктора addListener . |
Теперь при каждом щелчке по KML-объекту на карте боковая панель обновляется, отображая содержимое информационного окна.
Более подробная информация
Подробнее об использовании KML-файлов можно прочитать здесь.