Клуб API Карт

Масштаб карты

Пост в архиве.

Подскажите, пожалуйста, есть ли возможность установить масштаб, к примеру, 1:100000 ?

Те масштабы, которые соответствуют стандартам генштаба ?

 

9 комментариев
Sergey Konstantinov
28 января 2016, 03:12

В меркаторовской проекции масштаб (метров на пиксель) меняется с широтой.

Можно попытаться выставить необходимый масштаб для какой-то конкретной точки.

"Информационные решения"
28 января 2016, 03:12

Спасибо за совет, а как это реализуется средствами API ?

Sergey Konstantinov
28 января 2016, 03:12

Что конкретно вы хотите реализовать с помошью АПИ?

"Информационные решения"
28 января 2016, 03:12

Зум карты с масштабом:

1:5000

1:10000

1:25000

1:50000

1:100000

1:500000

 

Sergey Konstantinov
28 января 2016, 03:12

Метрический масштаб (километров в сантиметре) зависит от dpi устройства, на котором показана карта.

Можно добиться только масштаба в метрах на пиксель.

"Информационные решения"
28 января 2016, 03:12

Если Я правильно понял, сделать нужно следующее:

- узнаем dpi текущего разрешения

- выясняем коэффициент пикселей/на метр (КПМ)

- выясняем текущий масштаб метров на пиксель (ТекМП)

- получим Z = ТекМП * КПМ * риску выбранной шкалы масштаба по генштабу )

- устанавливаем зумм (Z)

?

Sergey Konstantinov
28 января 2016, 03:12

типа того :) но я не очень представляю, как вы хотите выяснять dpi мониторов пользователей и, главное, зачем вам это надо.

"Информационные решения"
28 января 2016, 03:12

dpi можно выяснить скриптом, думаю несложно будет.

Зачем - задачу поставили, делать масштаб согласно этому стандарту. Смысла я особого в этом не вижу, т.к. все объекты на этой карте будут нанесены схематично, но.. ))

Sergey Konstantinov
28 января 2016, 03:12

На свет что ли сличать???

В одном пикселе на широте lat (в радианах) и уровне масштабирования z содержится.

m = 40000 / (Math.pow(2, z + 8) * Math.cos(lat)) километров.

Или, наоборот, в одном пикселе будет содержаться m километров на уровне масштабирования

z = Math.log(40000 / (m * Math.cos(lat))) / Math.log(2) - 8

Для отображения дробных уровней масштабирования необходимо указать карте опцию avoidFractionalZoom: false.