Geo: Array;
Свойство Geo определяет массив объектов связи географических координат с координатами топоосновы.
Значение свойства устанавливается из JSON и возвращается с помощью метода getGeo. Задать значение с помощью метода setGeo нельзя.
Свойство содержит массив объектов типа PP.MapGeoItem.
Для выполнения примера предполагается наличие на странице компонента MapChart с наименованием «map» (см. «Размещение карты на HTML странице»). Рассчитаем географические координаты центральной точки области слоя карты с идентификатором «RU-PER», используя имеющиеся географические координаты центров областей с идентификаторами «RU-MOW» и «RU-SPE» и координаты топоосновы всех трёх областей:
/* Создадим объект связи географических координат центра области с идентификатором «RU-MOW» с координатами топоосновы */ var mowRect = map.getShape("RU-MOW").getBoundsRect(); var geoItem1 = new PP.MapGeoItem({ Latitude: 55.751667, // Широта Longitude: 37.617778, // Долгота X: mowRect.getLeft() + mowRect.getWidth() / 2, // Координата топоосновы X Y: mowRect.getTop() + mowRect.getHeight() / 2, // Координата топоосновы Y Id: "RU-MOW" }); // Создадим объект метаданных топоосновы карты var meta = new PP.MapTopobaseMeta({ // Массив объектов связи географических координат с координатами топоосновы Geo: [geoItem1] }); /* Создадим и установим второй объект связи географических координат области с идентификатором «RU-SPE» с координатами топоосновы */ var speRect = map.getShape("RU-SPE").getBoundsRect(); var geoItem2 = new PP.MapGeoItem({ Latitude: 59.95, // Широта Longitude: 30.316667, // Долгота X: speRect.getLeft() + speRect.getWidth() / 2, // Координата топоосновы X Y: speRect.getTop() + speRect.getHeight() / 2, // Координата топоосновы Y Id: "RU-SPE" }); meta.setGeoItem(geoItem2); // Определим координаты центра области с идентификатором «RU-PER» var perRect = map.getShape("RU-PER").getBoundsRect(); var center = new PP.Point({ X: perRect.getLeft() + perRect.getWidth() / 2, Y: perRect.getTop() + perRect.getHeight() / 2, }); // Определим коэффициенты связи географических координат с коорданатами топоосновы var yCoef = Math.abs((geoItem2.getLatitude() - geoItem1.getLatitude()) / (geoItem2.getY() - geoItem1.getY())); var xCoef = Math.abs((geoItem2.getLongitude() - geoItem1.getLongitude()) / (geoItem2.getX() - geoItem1.getX())); // Получим географические координаты области с идентификатором «RU-PER» var perX = Math.abs(center.getX() - geoItem1.getX()) * xCoef + geoItem1.getLongitude(); var perY = Math.abs(center.getY() - geoItem1.getY()) * yCoef + geoItem1.getLatitude(); console.log("Широта: " + perY + ", долгота: " + perX);
В результате выполнения примера в консоли браузера выли выведены географические координаты центральной точки области слоя карты с идентификатором «RU-PER»:
Широта: 59.18602187765048, долгота: 56.32188852435074
См. также: