Для выполнения примера необходимо создать html-страницу и выполнить следующие действия:
1. Добавить ссылку на css-файл PP.css.
Также нужно добавить ссылки на следующие js-файлы:
PP.js;
PP.GraphicsBase.js;
PP.MapChart.js;
PP.BaseMaster.js;
PP.MapMaster.js;
resources.ru.js.
2. В корневой папке проекта должны быть созданы следующие папки:
Json. В папке JSON располагаются файлы, имена которых соответствуют следующему формату: «MapExample_<Код территориального образования>.js». Для выполнения примера обязательным является наличие файлов MapExample_Russia.js и MapExample_World.js;
png. В папке png располагаются файлы со значками, имена которых соответствуют формату «Yahoo_Weather_<Номер значка>.png. Для корректного выполнения примера в папке должны быть размещены 7 файлов с номерами от «001» до «007», например, Yahoo_Weather_003.png;
Topobase. Данная папка содержит ещё две папки:
SVG. Содержит файлы для топоосновы типа SVG. Обязательным является наличие файла Russia.svg;
WebGL. В данной папке размещены файлы для топоосновы типа WebGL и Sphere. Необходимо наличие файлов Russia.tr и World.trsp.
3. В теге <body> разместить блок с идентификатором «MapType» для хранения панели выбора топоосновы карты и блок «map» для хранения карты:
<body> <!-- Контейнер для панели выбора топоосновы карты --> <div id="MapType" style="float: right;"></div> <!-- Контейнер для мастера --> <div id="mapMaster" style="float: left;"></div>
<!-- Контейнер для карты --> <div id="map"style="float: left;"></div> </body>
3. Добавить сценарий, создающий карту:
(function() {
// Создаём переменную, которая будет содержать карту
map = null;
// Указываем путь к корневой папке, содержащей файлы ресурсов
PP.resourceManager.setRootResourcesFolder("../../../resources/");
// Устанавливаем языковые настройки для ресурсов
PP.setCurrentCulture(PP.Cultures.ru)
// Определяем тип карты по умолчанию
type = PP.MapChartType.SVG;
// По умолчанию загружаем топооснову из файла Russia.svg в папке SVG
var topobase = "Russia";
var dir = "SVG";
var ext = "svg";
// Определяем папку с настройками карты
var settingsDir = "Json/";
// Определяем файл с настройками карты
var currentUrl = "MapExample_Russia.js";
// Функция для создания карты
function createMap(mapData) {
if (map) map.dispose();
var mapContent = document.getElementById("map-content");
// Получаем JSON-настройки карты
var settings = JSON.parse(mapData);
// Определяем путь к нужному файлу в зависимости от типа топоосновы
switch (type) {
case 'SVG':
dir = "Topobase/SVG";
topobase = "Russia";
ext = "svg";
break;
case 'WebGL':
dir = 'Topobase/WebGL'; topobase = "Russia"; ext = 'tr'; break; case 'Sphere': dir = 'Topobase/WebGL'; topobase = 'World'; ext = 'trsp'; break; default: settings.MapChart.Mode = "Drawing2D"; }; // Изменяем тип карты settings.MapChart.Type = type;
// Запрещаем отрисовку элементов карты на канве
settings.MapChart.RenderToCanvas = false;
// Определяем топооснову
settings.MapChart.Topobase = dir + "/" + topobase + "." + ext;
settings.MapChart.ParentNode = document.getElementById("map");
// Определяем путь к папке с картинками
settings.MapChart.ImagePath = "../../../build/img/";
PP.ImagePath = settings.MapChart.ImagePath;
// Создаём карту
map = new PP.MapChart(settings.MapChart ? settings.MapChart : settings);
// Перерисовываем размеры карты
updateSize();
};
// Выполняет Ajax-запрос для получения файла с JSON-настроками карты
function getRequest(dataURL) {
var Request = new PP.Ajax({
Url: dataURL,
Success: function(sender, args) {
createMap(args.ResponseText); // Создаём карту
Request.dispose();
}
});
Request.send(); // Отправляем запрос
}
var idTime;
// Обновляет размеры карты и удаляет ненужные слои
function updateSize() {
if (idTime) clearTimeout(idTime);
idTime = setTimeout(function() {
if (map) {
if (map.getMapTerritoryTranscript()) {
map.getMapTerritoryTranscript().hide();
};
map.getMilestoneLayer().remove();
map.getArrowLayer().remove();
}
}, 100);
}
// Загружает карту
function loadMapChart() {
getRequest(settingsDir + currentUrl);
createToolBar(); // Создаём панель кнопок для переключения типа карты
}
// Создаёт панель с кнопками для переключения типа топоосновы карты
function createToolBar() {
MapType = new PP.Ui.ToolBar({
ParentNode: "MapType",
Items: [{
Content: 'SVG',
Id: 'SVG',
IsChecked: true,
GroupName: 'mode'
}, {
Content: 'WebGL',
Id: 'WebGL',
GroupName: 'mode',
IsVisible: !PP.IsIE
}, {
Content: 'Sphere',
Id: 'Sphere',
GroupName: 'mode',
IsVisible: !PP.IsIE
}],
IsVisible: false // Скрываем панель инструментов
});
MapType.Click.add(changeType);
}
/* Обрабатывает нажатия кнопок, расположенных на панели выбора
типа топоосновы карты */
function changeType(s, a) {
if (a.Item) {
var aa = a.Item;
if (aa instanceof PP.Ui.ToolBarButton) {
changeMapType(a.Item.getContent());
}
}
}
// Изменяет тип карты
changeMapType = function(type) {
this.type = type;
switch (type) {
case 'SVG':
case 'WebGL':
currentUrl = "MapExample_Russia.js";
getRequest(settingsDir + currentUrl);
break;
case 'Sphere':
currentUrl = "MapExample_World.js";
getRequest(settingsDir + currentUrl);
break;
default:
map.setType(type);
}
}
// Создаёт панель масштабирования миникарты
function createMiniMap() {
var miniMap = new PP.Ui.MiniMap({
// Устанавливаем ширину панели масштабирования
Width: 100,
// Устанавливаем признак отображения карты
ShowMap: true,
// Устанавливаем признак отображения кнопок управления масштабом
ShowButtons: true,
// Устанавливаем признак изменения пропорций карты при изменении размера
KeepProportions: false,
// Устанавливаем признак сохранения начальных границ
KeepInitialBounds: true,
// Устанавливаем высоту кнопок управления масштабом
ButtonsHeight: 20,
FrameStyle: new PP.Style({
Background: new PP.SolidColorBrush({
Color: PP.Color.Colors.lightgreen
})
})
});
// Добавляем панель масштабирования на карту
map.setMiniMap(miniMap);
// Устанавливаем управляющий элемент панели масштабирования
miniMap._Control = map;
// Отображаем панель масштабирования на карте
map.setMiniMapEnabled(true, false);
// Убираем значки погоды
map._MilestoneLayer.remove();
}
// Загружаем карту
loadMapChart();
})();
Примечание. Пользователь может указать свои пути к файлам сценариев, ресурсов и изображений.
4. Для отображения сферы необходимо в конфигурационном файле веб-приложения web.config внутри элемента <staticContent> добавить следующий элемент:
<mimemap fileextension=".trsp" mimetype="application/x-trsp">
Для выполнения пользовательских сценариев над картой, в том числе примеров, приведённых на страницах описания свойств, методов и событий данного компонента и составляющих его элементов, требуется разместить код либо после указанного выше сценария, либо в консоли браузера.
В результате выполнения примера на html-странице будет размещен компонент PP.MapChart:

См. также: