Клуб API Карт

Рассчитать смещение центра карты с привязкой к масштабу

DUK63
6 марта 2014, 12:21

Здравствуйте.

Использую API 1.x, т.к. использование карты предполагается в "железке", не имеющей ни мыши, ни компьютерной клавиатуры, ни тачскрина. Единственные кнопки: Tab, Shift-Tab и Enter. Т.е. реально из всех существующих картографических сервисов на "железке" работает только карта m.maps.yandex.ru

 

Браузер "железки" частично поддерживает javascript, т.е. карту с требуемыми центром, масштабом, размером в пикселях и слоями я получаю.

 

На этой основе сделал свой проект (страницу), имеющий кнопки +,-,влево,вправо,вверх,вниз.

С зумом проблем нет. Но никак не могу подобрать коэффициенты смещения при нажатии кнопок сдвига карты. При маленьких масштабах (1-19) сдвигается очень мало, при крупных - слишком много. А хотелось бы на любом масштабе сделать сдвиг примерно на 2/3 высоты и/или ширины отображаемого участка карты, что бы, допустим, объекты, находящиеся в правой трети (по ширине) карты, сдвигались в левую треть при смещении карты вправо. Так же и по вертикали.

Размер самой карты остается неизменным.

Как расчитать нужное приращение координат в зависимости от масштаба? Есть ли готовое решение (формула)? Или подбирать смещение вручную, в зависимости от текущего масштаба?

9 комментариев
Добрый день, подскажите пожалуйста, что значит "в железке"? Где эта железка размещается и для каких целей используется?

Это автомобильный мультимедийный центр на базе QNX с возможностью выхода в интернет.

Цель использования карт - смотреть пробки от Яндекс в отображаемом районе.

Условно "Бортовой компьютер", да? :)

Ну как бы не совсем бортовик. Audi MMI 3G. Всякая мультимедиа + некоторые настройки самой машины.

Еще один вопрос: такая "железка" одна или вы делаете это для целого ряда устройств?

Я ее не делаю, она есть. Пытаюсь расширить функционал.

Исключительно для себя или для всей линейки устройств? 

А в чем принципиальная разница?

Свяжитесь со мной пожалуйста по электронной почте. Этот разговор проще будет продолжить так ache@yandex-team.ru Спасибо. Жду вашего письма.