Клуб API Карт

Мультиязычность + собств. SVG метки + динам. изменен. в адр. строке (напр: #0.000.000) в v.2.1

Егор
1 июля 2014, 20:32

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

 

У меня возникло несколько вопросов (v.2.1):

 

  1. Мультиязычность в собственной карте (EN, ES, RU);
  2. Собственные SVG метки;
  3. Динамическое изменение в адресной строке.

 

1. Есть ли возможность создать собственную мультиязчыную карту для как минимум на 3-х языках (Английского, испанского и русского (желательно бы еще французкий и немецкий). Метки те же, координаты те же, элементы управления те же, все то же, только при подключении менять "?lang=ru_RU".

2. Правильно ли я понимаю, что собственные SVG иконки меток будут работать, если вместо ссылки на растр. изобр. (.gif, .png) указать ссылку на вектор?

3. Динамическое изменение в адресной строке. Я видел такую фичу только на одном сайте. Смысл в том, что когда юзер взаимодействует с картой (изменят масштаб например), то в адрестной строке к общему адресу добавляется якорь и координаты типа: #4.687. А если юзер кликнул на какую-то метку, то к этому добавится еще и название метки: #4.687-metka1 (как-то так). Таким образом, юзерам удобно делиться картой друг с другом. Выбрал масштаб, выбрал метку, скопировал полученный адрес и отправил другу (никаких тебе "получить ссылку").

 

 

 

9 комментариев
Подписаться на комментарии к посту
Доброе утро.

1. Это решается на стороне страницы. Точнее при создании страницы нужно подставлять разные lang=.
Но сейчас поддерживаются сдедающие языки
lang=ru_RU;
lang=en_US;
lang=ru_UA;
lang=uk_UA;
lang=tr_TR.
http://api.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/load.xml

2. Да. В браузерах, которые поддерживают SVG метки.
3. По событию карты "boundschange" (или по любому другому событию) нужно устанавливать значение window.location.hash, а при открытии страницы читать значение. К примеру, можно сохранять в хэш в таком формате property=asdasd,asdasd=asd. А при открытии страницы разбивать строчку по запятым, а потом каждую часть по символу "=".
http://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Map.xml#event-boundschange

Доброе!

Спасибо за ответы!

Пару уточнений:

  1. Я несколько раз пробегался глазами по песочнице и не видел как в названии метки приписывать ей дополнительный язык (про lang=en_US; понятно, инициализация). Я, наверное, не совсем точно выразился. Мне не нужна стандартная карта от яндекса (с городами и дорогами), мне нужно сделать свою, немного на другую тематику, и я не знаю как в метках прописывать разные языки, чтобы при инициализации отображался нужный язык:

        properties: {
          clusterCaption: 'ru: Геообъект № '+(i+1), 'en: GeoObjects № '+(i+1),
          balloonContentBody: 'ru: Текст балуна № '+(i+1),  'en: Text balloon № '+(i+1)
        }

    Т.е. Как-то так это должно работать?

  2. Огласите весь список, пожалуйста :)
1. API не предоставляет интерфейс локализации. Сообщения на определенных языках нужно подставлять самому. Да и это было бы странно: все пользователи загружали все возможные переводы.

2. http://caniuse.com/#cats=SVG
Спасибо
  1. Есть идеи в каком направлении читать/изучать/копать?
Зависит от серверной стороны. Вряд ли у вас статический файл. Чаще всего значение языка или по url определяют (то есть для разных языков разные url или даже домены) или хранят где-нибудь (к примеру, в сессии) пользовательский выбор. При формировании страницы поставляется нужная локаль.
Т.е. в моем варианте нужен отдельный файл с названиями меток и их описанием, и каким то образом нужно чтобы включался именно определенный езыг. У меня будет так: http://мойсайт.com/ru(or en)/mapname

Вот взгляните: http://skyrim.coolaps.com/?lang=ru - ?lang=ru то о чем вы говорите, определяет по адресу, пхп + js?

С другой стороны, можно просто запилить 2 карты на двух разных языках и не париться, я прав? Конечно это не совсем удобно, но честно признаться, я не очень хорошо разбираюсь в js, и мне не видно решение проблемы с локализацией. Это сложно для меня.
Да. В файлах хранить значение ключ - перевод на определенном языке. А при создании карты оперировать только ключами.

С двумя картами будет неудобно производить обновление.