Клуб API Карт

Все метки отображаются в Африке

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

Я прочел где то на форуме что это нулевые координаты , ну а как это вылечить ?  передаются точно правильные координаты , но точка все равно в тихом океане

18 комментариев
Всеволод Шмыров
27 января 2016, 23:10
Добрый день. Какая порядок координат вы используете? В API Яндекс.Карт по умолчанию используется порядок "широта-долгота".
https://tech.yandex.ru/maps/doc/jsapi/2.1/update/concepts/update-docpage/#load-api
Попробуйте поменять параметр "coordorder" на "longlat" при подключении API.
Сергей Алпеев
27 января 2016, 23:10
не совсем понял о каких параметрах идет речь , вот мой код


 
   
    ymaps.ready(function () {
   

    function reverse(s) {
        var arr = s.split(',');
        return arr[1] + ',' + arr[0];
    }
    coord = reverse('[[*coords]]');  // переворачиваю координаты так как из xml ответа они почему то приходят перевернутыми , но при этом на другой карте отображаются правильно
    console.log(coord);
   
   
   
    var myMap = new ymaps.Map('map', {
            center: coord,
            zoom: 12
        }),
       
       
        myPlacemark = new ymaps.Placemark(coord, { // передаю координаты из переменной
            hintContent: ' [[*pagetitle]] ',
            balloonContentHeader: '[[*pagetitle]]',
            balloonContentBody: '[[*introtext]]'
        }, {
            iconLayout: 'default#image',
            iconImageHref: 'main/red_marker.png',
            iconImageSize: [20, 35],
            iconImageOffset: [-3, -42]
        });

    myMap.geoObjects.add(myPlacemark);
   
});


Если перевернуть координаты то объект показывается в тихом океане , а если не переворачивать то в Ашхабате (что логично , потому что Ашхабат имеет обратные координаты Москвы ) и теоритически если я их переврну должна показываться москва , но показывается тихий океан, если подставить перевернутые координаты вручную то все показывается верно , чертовщина какаято =)
Всеволод Шмыров
27 января 2016, 23:10
Вы задается координаты в виде строки, а нужно передавать массив из двух элементов.
Сергей Алпеев
27 января 2016, 23:10
а почему тогда точка вообще показывается ? я подумал что если бы это имело значение , то метки вообще не было бы , я все это делаю потому что по какой то причине старый код который я написал перестал работать , сам по себе перестал , выглядит так
ymaps.ready(init);
        function init(){
          var myMap;
          var coord = $('#coords').text(),
              adress,
              myPlacemark,
              big_Map = false;
             
             
             
             
              ymaps.geocode(coord).then(function (res) {
                adress = res.geoObjects.get(0).geometry.getCoordinates();
                myMap = new ymaps.Map("map", {
                  center: adress,
                  zoom: 14
                });
               
               
               
               
               
               
                myPlacemark = new ymaps.Placemark(adress, {
                     balloonContentHeader: '[[*pagetitle]]',
                     balloonContentBody: '[[*introtext]]'
                },
                {    iconLayout: 'default#image',
                     iconImageHref: 'main/red_marker.png',
                     iconImageSize: [20, 35],
                     iconImageOffset: [-3, -42]
                });
                 
               
               
           
               
                 
                myMap.geoObjects.add(myPlacemark);
               
               
              },
              function (err) {
                  alert('Не удалось найти этот объект ');
              });
        }
Всеволод Шмыров
27 января 2016, 23:10
У вас в старом коде коодинаты передавались в виде строчки геокодеру, а он уже потом сам создавал метку, из которой вы берете нормальные координаты.

Мы не рассматривали поведение метки при указании невалидных данных. Передавайте координаты не в виде строки.
Сергей Алпеев
27 января 2016, 23:10
а старый код почему перестал работать ?
Всеволод Шмыров
27 января 2016, 23:10
Когда он перестал работать? И как именно, точка не показывается или показывается, но в неверном месте?
Сергей Алпеев
27 января 2016, 23:10
пару дней назад , и сейчас продолжает не работать
Всеволод Шмыров
27 января 2016, 23:10
Можете дать ссылку на страницу с проблемой?
Сергей Алпеев
27 января 2016, 23:10
Всеволод Шмыров
27 января 2016, 23:10
Как я уже написал выше, в вашем текущем коде нужно передавать метке не строку, а массив с координатами "55.773975,37.586086" -> [55.773975,37.586086].

Как именно не работал старый код? Метка вообще не отображалась?
Сергей Алпеев
27 января 2016, 23:10
я раскомментировал старый код , посмотрите сейчас , он работал , и правильно , почему перестал понять не могу
Сергей Алпеев
27 января 2016, 23:10
потому и начал переделывать
Всеволод Шмыров
27 января 2016, 23:10
В вашем примере сейчас создаются две карты, которые добавляются в один элемент. Сверху оказывается карта без метки.
Сергей Алпеев
27 января 2016, 23:10
две ? О_О , как вы это поняли ? вроде этот код и div с самой картой map
Всеволод Шмыров
27 января 2016, 23:10
https://yadi.sk/i/EYtFWHkXeWPF5
Если верхнюю скрыть, то все корректно отображается.
https://yadi.sk/i/xSOj-WCueWPJp

У вас в коде на 177 и 230 строчке вызывается new ymaps.Map
Сергей Алпеев
27 января 2016, 23:10
я идиот , спасибо , можно еще внести предложение ? чтобы тут использовались уведомления бразуера чтобы можно было сразу реагировать на агента поддержки ?
Сергей Алпеев
27 января 2016, 23:10
хм, в 230 был закомментированый код , сейчас его нет , и new ymaps.Map вызывается один раз , а карты 2