Клуб API Карт

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

EFRRR
5 марта 2010, 16:58

Сообственно в заголовке темы вопрос... Подскажите плз...

8 комментариев
Подписаться на комментарии к посту
площадь квадрата viewporta - width*height
площадь многоугольника

$L=count($points)-1;
 for ($t=0;$t$dx=$points[$t+1]['x']+$points[$t]['x']; $dy=$points[$t+1]['y']-$points[$t]['y']; $sqrt+=$dx*$dy;
}
$sqrt=abs($sqrt)/2;
Хорошо, но не понятно... во-первых что здесь $points - координаты вершины типа?
Второй вопрос, как получить в API линейные размеры? С географическими ничего вроде сделать не получится.
И ещё вопрос, сразу сюда, как получить центр многоугольника?
polygon.getBounds().getCenter(), как я понял, только для прямоугольников?
$points - массив вершин, тут мы просто считаем интеграл прощади многольника.
вы можете перевести коориднаты lat-lng в пиксельные для заданого зума чтобы получить реальную площадь в метрах

а насчет центра.. у полигона есть геметрический центр и центр масс, вам какой?
По поводу центра - геометрический.(в координатах географических).
По поводу перевода в пиксельные, то вроде просто размеры относительно div вроде получаем. Т.е. если окно, в котором карта отображается - это div, например, размером 500 на 300px, а область например занимает весь размер окна карты(т.е. на все 500 на 300), то эти значения и выведутся, или я ошибаюсь?
По поводу площади, спс за алгоритм, разобрался. Только всё же пиксели это не метры. :) А вот с центром не пойму...
Ну как насчёт центра, нету идей?:)
вариант 1 - центр это центр MBR полигона
вариант 2 - центр это среднее арифметическое координат полигона( сумма делить на колличество)
вариант 3 - центр это среднее арифметическое координат с учетом длины отрезка( сумма(кооридната+длина отрезка) делить на длину периметра)

в разных вариантах разные варианты ведут себя по разному.
если надо написать надпись поверх полигона - вариант 1
если внутри - вариант 2