Клуб API Карт

Движение метки

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

Здравствуйте, подскажите как делать движение метки в реальном времени без перезагрузки карты? Даже просто подвинуть метку не получается.

пробовал вот так

 

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

           
             
            function move()
            {
            met =  new YMaps.Placemark(new YMaps.GeoPoint(37.68, 55.73));
             map.addOverlay(met);
            }
        });
    </script> 
</head> 
 
<body> 
    <input type="button" value="Удалить карту" onclick="move()" /> 
    <div id="YMapsID" style="width:600px;height:400px"></div> 
</body> 
 

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

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<head> 
    <title>Примеры. Добавление элементов управления.</title> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    <script type="text/javascript">
     window.onload = function () {
            map = new YMaps.Map(document.getElementById("YMapsID"));
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
        }
        var c;
        function YaMap(x,y) {
    c = new YMaps.Placemark(new YMaps.GeoPoint(x, y));
            map.addOverlay(c);
        }
    </script>
</head>
<body>
    <div id="YMapsID" style="width:600px;height:400px"></div>
    <input onclick="YaMap(37.64, 55.76)" name="" type="button" value="Карта" />
    <input onclick="YaMap(37.68, 55.73)" name="" type="button" value="Карта" />
</body>
 
</html>
 

 


 

19 комментариев
Александр Новиков
28 января 2016, 07:34
а можно сам скрипт бешеной точки выложить?

а можно что нибудь попроще? без анимации просто изменение координат метки в реальном времени

Какую задачу вы решаете?

В кратце задача такая, есть набор машин на которых стоят навигаторы, с интервалом в 15 секунд координаты машин кладутся в sql таблицу, надо брать координаты из базы и для каждой машины выступающей на карте в виде метки и перемещать тем самым метки на карте. Хотелось бы чтобы перемещение меток происходило в реальном времени и без обновления страницы. Ломаю голову как это сделать и на какой обработчик повесить.

Сделать это несложно на самом деле. В простейшем виде это будет выглядеть так:

var intervalID = setInterval(updateCarPosition, 15000);

function updateCarPosition () {

    YMaps.jQuery.getJSON("урл с которого нужно брать данные", function (data) {

        // делаете из данных метки и добавляете на карту, либо сдвигаете старые

    })

}

Схожий пример: http://hevil.narod2.ru/autoclubs/

Мой долг отметить, что диспетчеризация ТС нарушает наше ПС:

2.3.6.3. Создавать на основе Сервиса системы мониторинга транспортных
средств, отображающих информацию в реальном времени, и любые другие
услуги, связанные с управлением и диспетчеризацией транспортных средств.

саш, а как сделать чтобы это обновление координат вызывалось само? без обновления страницы через заданный промежуток времени какой нибудь.

или этот setinterval  и будет вызывать ?

Ага :)

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

cI7acu6o orpomHoe!!!

Отрывок из пользовательского соглашения АПИ Яндекс.Карт:

2.3.6. ОГРАНИЧЕНИЯ. Используя Сервис, Пользователь не имеет права:
...
2.3.6.3. Создавать на основе Сервиса системы мониторинга транспортных 
средств, отображающих информацию в реальном времени, и любые другие 
услуги, связанные с управлением и диспетчеризацией транспортных средств.

Тоесть получается, что все инициаторы систем мониторинга на основе карт Яндекс, являются нарушителями, которым могут отказать в доступе к сервису без объяснения причин ?

да, таковы условия поставщиков данных (карт),

используемых в АПИ

Подкиньте, пожалуйста, пример для api 2.0. Из документации не понятно, как программно переместить объект на карте

dimik,
а где нынче искать этот пример?
mapsapi-help
Сотрудник Яндекса5 апреля 2021, 16:37
xdoc,
Обратите внимание, что исходный вопрос относится к версии API 1.1, автор комментария интересуется версией 2.0, но актуальная версия на текущий момент 2.1.


Примеры анимации объектов можно найти в следующих примерах:
https://yandex.ru/dev/maps/jsbox/2.1/placemark_layout
https://yandex.ru/dev/maps/jsbox/2.1/polyline_animation/

Однако, анимация перемещения метки не представлена в примерах. Вы можете найти примеры на профильных ресурсах, например:
https://ru.stackoverflow.com/q/1235180
https://ru.stackoverflow.com/q/938414

Если ваш вопрос касается определенной версии API или другого случая, пожалуйста, напишите нам в техподдержку:
https://yandex.ru/dev/maps/jsapi/doc/2.1/feedback/troubleshooting.html