Обзор
В этом руководстве показано, как отображать информацию о файле 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 с атрибутом имени video .Файл для этого руководства использует встроенное видео YouTube в качестве значения текста всплывающей подсказки каждой метки. |
Дополнительную информацию о замене сущностей можно найти в главе «Добавление пользовательских данных» документации KML.
Отображение KMLLayer
Инициализация карты
В этой таблице поясняется код для этого раздела.
Код и описание | |
---|---|
| Чтобы отобразить KML на карте, сначала необходимо создать карту. Этот код создает новый объект Google Map, сообщает ему, где следует центрировать и масштабировать, и прикрепляет карту к div .Чтобы узнать больше об основах создания карты Google, прочитайте руководство «Добавление карты Google на ваш веб-сайт» . |
Создание KMLLayer
В этой таблице объясняется код, создающий KMLLayer.
Код и описание | |
---|---|
| Создает новый объект KMLLayer для отображения KML. |
| Конструктор KMLLayer задает URL вашего файла KML. Он также определяет свойства для объекта KMLLayer, которые выполняют следующие действия:
|
Отображение данных на боковой панели
В этом разделе объясняются настройки, которые отображают содержимое информационного окна на боковой панели при нажатии на объект на карте. Это делается следующим образом:
- Прослушивание события щелчка по любой из функций KMLLayer.
- Сбор данных выбранной функции.
- Запись этих данных на боковую панель.
Добавление прослушивателя событий
Google Maps предоставляет функцию для прослушивания и реагирования на события пользователя на карте, такие как щелчки или нажатия клавиш клавиатуры. Она добавляет прослушиватель для таких событий click
.
В таблице ниже поясняется код для этого раздела.
Код и описание | |
---|---|
| Прослушиватель событий kmlLayer.addListener фокусируется на следующем:
|
Запись данных объекта KML на боковую панель
На этом этапе обучения вы захватили события щелчка на элементах слоя. Теперь вы можете настроить приложение на запись данных элемента и содержимого информационного окна на боковую панель.
В таблице ниже поясняется код для этого раздела.
Код и описание | |
---|---|
| Записывает содержимое информационного окна в переменную. |
| Определяет div для записи и заменяет HTML-код в нем содержимым функции. |
| Эти строки кода становятся функцией внутри конструктора addListener . |
Теперь каждый раз, когда вы нажимаете на объект KML на карте, боковая панель обновляется, отображая содержимое его информационного окна.
Дополнительная информация
Подробнее об использовании файлов KML .