Изменение языка карты
API позволяет отображать карты, локализованные на различных языках с учётом специфики отдельных стран. Для того чтобы управлять локализацией, необходимо в HTTP-запросе передать локаль.
Локаль задается параметром lang:
lang=language_region
- language — двузначный код языка в формате ISO 639-1. Задает язык объектов на карте (топонимов, элементов управления).
- region — двузначный код страны в формате ISO 3166-1. Определяет региональные особенности, например единицу измерения (для обозначения расстояния между объектами или скорости движения по маршруту). Примечание. Для регионов RU, UA и TR расстояние показывается в километрах, для US — в милях.
На данный момент поддерживаются следующие локали:
- lang=ru_RU;
- lang=en_US;
- lang=en_RU;
- lang=ru_UA;
- lang=uk_UA;
- lang=tr_TR.
Подробней можно прочитать тут.
index.html
language.js
<!DOCTYPE html>
<html>
<head>
<title>Изменение языка карты</title>
<meta
http-equiv="Content-Type"
content="text/html; charset=utf-8"
/>
<script src="language.js" type="text/javascript"></script>
<style>
html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
#map {
widht: 100%;
height: 90%;
}
#language {
cursor: pointer;
margin-left: 5px;
font-size: 100%;
}
</style>
</head>
<body>
<select id="language">
<option value="ru">ru</option>
<option selected value="en">en</option>
</select>
<div id="map"></div>
</body>
</html>
var myMap;
var script;
function init(ymaps) {
myMap = new ymaps.Map(
"map",
{
center: [55.9238145091058, 37.897131347654376],
zoom: 10,
},
{
searchControlProvider: "yandex#search",
}
);
}
window.onload = function () {
// Получим ссылки на элементы с тегом 'head' и id 'language'.
var head = document.getElementsByTagName("head")[0];
var select = document.getElementById("language");
select.createMap = function () {
// Получим значение выбранного языка.
var language = this.value;
// Если карта уже была создана, то удалим её.
if (myMap) {
myMap.destroy();
}
// Создадим элемент 'script'.
script = document.createElement("script");
script.type = "text/javascript";
script.charset = "utf-8";
// Запишем ссылку на JS API Яндекс.Карт с выбранным языком в атрибут 'src'.
script.src =
"https://api-maps.yandex.ru/2.1/?onload=init_" +
language +
"&lang=" +
language +
"_RU&ns=ymaps_" +
language;
// Добавим элемент 'script' на страницу.
head.appendChild(script);
// Использование пространства имен позволяет избежать пересечения названий функций
// и прочих программных компонентов.
window["init_" + language] = function () {
init(window["ymaps_" + language]);
};
};
// Назначим обработчик для события выбора языка из списка.
document
.getElementById("language")
.addEventListener("change", select.createMap);
// Создадим карту и зададим для нее язык, который был выбран по умолчанию.
select.createMap();
};