Клуб API Карт

Неверное отображение YMapsML-файла

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

Пробую сделать карту работ своей фирмы. Для этого в Яндекс.Карты была создана катра с точками внедрения оборудования. На сайте сделана страничка с обработчиком и в него вставлена ссылка на карту.

В результате инициализируется карта как и было нужно, но через секунду, когда загружается YMapsML-файл, карта переинициализируется (меняется масштаб и  начальное позицианирование), а также неправильно начинают отображаться метки (номера меток не совпадают с границами меток). Скриншот прилагаю.

Вопросы: Как можно карту привести в порядок?  Можно ли убрать номера меток? Что я делаю не так?

Карта инициализировась:

Карта подгрузила YMapsML-файл:

 

Код карты:

<script type="text/javascript">// <![CDATA[
        // Создание обработчика для события window.onLoad
        YMaps.jQuery(function () {
            // Создание экземпляра карты и его привязка к созданному контейнеру
            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
 
            // Установка для карты ее центра и масштаба
            map.setCenter(new YMaps.GeoPoint(39.87,57.62), 4);
 
           // Добавление элементов управления
            map.addControl(new YMaps.ToolBar());
            map.addControl(new YMaps.Zoom());
            map.addControl(new YMaps.ScaleLine());
            map.addControl(new YMaps.SearchControl());

            // Массив ключей стилей
            var styleKeys = [
                        "default#workshopIcon", "default#factoryIcon", "default#trainIcon",
                        "default#buildingsIcon"];

            // Создание YMapsML-документа и добавление его на карту
            var ml = new YMaps.YMapsML("http://maps.yandex.ru/export/usermaps/p9MM6feVRLhUXD_4gOqHyCmeKDOTdZfn/");
            map.addOverlay(ml);
 
    YMaps.Events.observe(ml, ml.Events.Fault, function (ml, error) {
      alert('Ошибка: ' + error);
    });


        })
// ]]></script>
<div style="width: 650px; height: 550px;" id="YMapsID"></div>

3 комментария
Александр Новиков
28 января 2016, 08:01
В начале, в качестве совета, хочу предложить вам грузить файл YMapsML не с Яндекса, а со своего сервера. Т.е. сохранить файл http://maps.yandex.ru/export/usermaps/p9MM6feVRLhUXD_4gOqHyCmeKDOTdZfn/ себе на сервер под каким-нибудь именем навроде maps.xml и в грузить его уже как var ml = new YMaps.YMapsML("maps.xml"); Это заметно упростит отладку и вообще жизнь :) Единственный минус в том что файл придется редактировать руками. Теперь по вашим проблемам. Карта меняет цетровку и уровень приближения из-за того что в boundedBy заданы координаты границ, по которым карта и центруется. Это надо убирать, либо устанавливать правильные для вас значения. Номера меток надо выравнивать стилями. Тут похоже на перекрытие стилей. Т.е. стиль сайта, влияет на отображение метки. У вас карта вставленна в span с классом news А в стилях прописано для .news img padding-top: 10px; Возможно из-за этого и уходит текст метки вниз. Попробуйте в CSS в конце добавить стиль .news #YMapsID img {padding:0px;} Может быть поможет.

Точно ли можно указывать локальное расположение xml файла?


Выдаёт  ошибку "не инициализировано имя хоста"


Работаю  локально, с денвером. Имя сайта доступно только для меня. Если указываю  расположение файла вместе с этим придуманным именем - ошибка "сервер  даёт 404 ошибку".


Создаётся впечатление, что этот xml файл  загружает яндекс, обрабатывает и вместе с картой отображает на сайте.  Да?

Да, парсер YMapsML берет файл по укзанному адресу (поэтому этот файл и должен быть доступен публично), переводит его в соответствующий javascript-код, отсылает его асинхронно клиенту, на клиенте код выполняется и на карте отображаются объекты.