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

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

Добрый день, подскажите как определить попадание точки в круг
радиус круга задан в метрах через свойство
var Circle = new google.maps.Circle({
                          strokeColor: 'blue',
                          strokeOpacity: 0.8,
                          strokeWeight: 2,
                          fillColor: 'blue',
                          fillOpacity: 0.35,
                          map: myMap,
                          center: {lat: 50.013770, lng: 36.214603},
                          radius: 70000,
                          draggable: true
                        });


Я получаю центр круга при его перемещении и сравниваю по формуле входит ли она в круг или нет
var x = Circle.getCenter().lat();
var y = Circle.getCenter().lng();
var r = 0.63; //радиус, высчитывал как 1 меридиан 111,111 км, а у меня 70 км, и приблизительно получилось такое значение
var xt = 50.431005;
var yt = 30.538288;


Для проверки использую вот такую формулу:
Math.pow((x-xt),2)+Math.pow((y-yt),2)<=Math.pow(r,2)

Но проблема возникает в том что сверху и с низу круга проверка попадания круга срабатывает хорошо, а вот с правой и левой стороны круга проверка срабатывает где-то практически к центру круга, получается что проверка проверяется не по кругу а по эллипсу.
Подскажите что я не так делаю, как мне производить подсчёт именно по кругу, а не по элипсу
  • Вопрос задан
  • 903 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
https://stackoverflow.com/questions/8766218/detect...
google.maps.Circle.prototype.contains = function(latLng) {
  return this.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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