Задать вопрос

Как автоматически определить полигон вокруг линий или точки?

Всем привет! Первый раз сталкиваюсь с подобной задачей. Как определить полигон вокруг линий с помощью Google Maps API как показано на скриншоте? Расстояние от точки до линий должно быть 10 м.

Куда копать, как называются алгоритмы или может быть методы Google Maps API которые позволяют такое делать?

620a2b9abe70d462163031.png
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
twobomb
@twobomb
function getRects(dots,padding  = 30){		//dots - Array[{x:x,y:y} ] 
  if(dots.length == 1)
  	dots = dots.concat([dots[0]]);
	let rects = [];
  	if(dots.length > 1){
    	for(let i = 0; i < dots.length-1;i++){      
      	let angle = getAngle(dots[i].x,dots[i].y,dots[i+1].x,dots[i+1].y);
        rects.push({
        	x1:dots[i].x + padding * Math.cos(angle-Math.PI/2) + padding * Math.cos(angle+Math.PI),
          y1:dots[i].y  + padding * Math.sin(angle-Math.PI/2) + padding * Math.sin(angle+Math.PI),
          
        	x2:dots[i].x + padding * Math.cos(angle+Math.PI/2) + padding * Math.cos(angle+Math.PI),
          y2:dots[i].y  + padding * Math.sin(angle+Math.PI/2) + padding * Math.sin(angle+Math.PI),
          
        	x3:dots[i+1].x + padding * Math.cos(angle+Math.PI/2) + padding * Math.cos(angle),
          y3:dots[i+1].y  + padding * Math.sin(angle+Math.PI/2) + padding * Math.sin(angle),
          
        	x4:dots[i+1].x + padding * Math.cos(angle-Math.PI/2) + padding * Math.cos(angle),
          y4:dots[i+1].y  + padding * Math.sin(angle-Math.PI/2)  + padding * Math.sin(angle),
          
        });
      }
    }
    return rects;
}
//Получить угол между двумя точками
function getAngle(dx, dy, dx1, dy1) {
  return Math.atan2(dy - dy1, dx - dx1) + Math.PI;
}

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы