Доброго времени суток. Появилась необходимость построить окружность по введенным координатам и радиусу.
Пример:
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);
}
}
}
Объект рисуется, но радиус у него не верен. Просьба объяснить как перевести введенный радиус в необходимые пиксели
Пример:
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);
}
}
}
Объект рисуется, но радиус у него не верен. Просьба объяснить как перевести введенный радиус в необходимые пиксели