Отображение GPX и KML
При нажатии на кнопки "Показать пример GPX" и "Показать пример KML" будет отображаться XML, экспортированный из Конструктора Карт. Как отобразить XML из другого источника можно посмотреть по клику на кнопку "KML с сайта openflights.org".
API Яндекс.Карт позволяет загружать XML-файлы с географическими данными в форматах KML и GPX.
Для загрузки данных используется функция geoXml.load.
index.html
geoxml_display.js
<!DOCTYPE html>
<html>
<head>
<title>Отображение GPX и KML</title>
<meta
http-equiv="Content-Type"
content="text/html; charset=utf-8"
/>
<!--
Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
-->
<script
src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<ваш API-ключ>"
type="text/javascript"
></script>
<script
src="https://yandex.st/jquery/2.2.3/jquery.min.js"
type="text/javascript"
></script>
<script src="geoxml_display.js" type="text/javascript"></script>
<style>
body,
html {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
#map {
width: 100%;
height: 85%;
}
.inputs {
padding: 10px;
}
</style>
</head>
<body>
<div id="map"></div>
<div class="inputs">
<input
type="button"
value="Показать пример GPX"
class="load-gpx"
/>
<input
type="button"
value="Показать пример KML"
class="load-kml"
/>
<input
type="button"
value="KML с сайта openflights.org"
class="load-kml-flights"
/>
</div>
</body>
</html>
ymaps.ready(init);
function init() {
var myMap = new ymaps.Map("map", {
center: [59.994675, 29.702651], // Москва
zoom: 10,
controls: ["zoomControl"],
}),
gpxButton = $(".load-gpx"),
kmlButton = $(".load-kml"),
kmlFlightsButton = $(".load-kml-flights");
// Отключение кеширования атрибута disabled в Firefox.
gpxButton.get(0).disabled = false;
kmlButton.get(0).disabled = false;
kmlFlightsButton.get(0).disabled = false;
// При нажатии на кнопку загружаем соответствующий XML-файл
// и отображаем его данные на карте.
gpxButton.click(function (e) {
ymaps.geoXml.load("geoObjects.gpx").then(onGeoXmlLoad);
e.target.disabled = true;
});
kmlButton.click(function (e) {
ymaps.geoXml.load("geoObjects.kml").then(onGeoXmlLoad);
e.target.disabled = true;
});
kmlFlightsButton.click(function (e) {
ymaps.geoXml
.load("http://openflights.org/demo/openflights-sample.kml")
.then(function (res) {
res.geoObjects.each(function (obj) {
obj.options.set({ preset: "islands#blackCircleIcon" });
if (!obj.geometry) {
obj.each(function (obj) {
obj.options.set({ strokeColor: "9090e8" });
});
}
});
onGeoXmlLoad(res);
});
e.target.disabled = true;
});
// Обработчик загрузки XML-файлов.
function onGeoXmlLoad(res) {
myMap.geoObjects.add(res.geoObjects);
if (res.mapState) {
res.mapState.applyToMap(myMap);
} else {
myMap.setBounds(res.geoObjects.getBounds());
}
}
}