На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Построение выделенных областей по координатам.

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebToolKit
Страницы: 1
RSS
Построение выделенных областей по координатам.
 
Доброго времени суток.  Появилась необходимость построить окружность по введенным координатам и радиусу.
Пример:
57.326521
83.496094  
2000 м

Для этого создал виджет с полями для ввода и позаимствовал логику с  getCircle в src\components\GwtkSearchArea\actions\SelectMapCircleAction.ts
Введенные координаты я переводил в пиксели,
const center = this.map.geoToPixel(new GeoPoint(value.longitude, value.latitude, 0, this.map.ProjectionId), this.mapWindow.getMap().getZoom());
       
И отрисовывал объект

        for (let numberPoint = 0; numberPoint < 361; numberPoint = numberPoint + 10) {
            let xPoint = Math.cos((Math.PI * numberPoint) / 180) * radius + center.x;
            let yPoint = Math.sin((Math.PI * numberPoint) / 180) * radius + center.y;
            if (xPoint && yPoint) {
                const pointXYCircle = new PixelPoint(xPoint, yPoint);
                const pointXYPlace = this.mapWindow.getMap().pixelToPlane(pointXYCircle);
                if (pointXYPlace) {
                    this.circleObject.addPoint(pointXYPlace);
                }
            }
        }

Объект рисуется, но радиус у него не верен. Просьба объяснить как перевести введенный радиус в необходимые пиксели
 
Здравствуйте!
Для построения кривой окружности надо воспользоваться функцией расчета координат точки
по координатам центра, радиусу (расстоянию) и азимуту.

1) Создать класс расчетов:
 private mapCalculator = new GWTK.MapCalculations( this.map );

2)  let azimuth = 0;
Затем в цикле, изменяя значение угла (azimuth), определять координаты точек окружности:
                       
const result = this.mapCalculator.mapDirectPositionComputation( latitude, longitude, azimuth, radius );
mapObject.addGeoPoint( new GeoPoint( result.l, result.b )  );  
Изменено: Ольга Нефедьева - 15.03.2023 11:16:11
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2025

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности