Клуб API Карт

программное изменение координаты объекта

lerneree
31 января 2014, 00:37

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

Я создал карту и объект

 

var myMap = new ymaps.Map('map', {
    // При инициализации карты, обязательно нужно указать
    // ее центр и коэффициент масштабирования
    center: [30.75, 35.968236],
    zoom: 7
});
// Создание метки 
var myPlacemark = new ymaps.Placemark(
    // Координаты метки
    [29.563786, 34.968236], {
        // Свойства
        // Текст метки
        hintContent: 'Эйлат'
    }, {
        iconImageHref: 'http://www.diamond-tours-eilat.ru/maps/1nofon.png', // картинка иконки
        iconImageSize: [44, 38], // размеры картинки
        iconImageOffset: [-19, -23] // смещение картинки
    });

 

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

Спасибо

9 комментариев
Подписаться на комментарии к посту
myPlacemark.geometry.setCoordinates([..., ...]);

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

            var myMap = new ymaps.Map('map', {
                    // При инициализации карты, обязательно нужно указать
                    // ее центр и коэффициент масштабирования
                    center: [30.75,35.968236],
                    zoom: 7
                });

там вроде надо var myCircle = new ymaps.GeoObject({
    geometry: {
        type: "Circle",

Ответ на ваш вопрос есть в документации

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/geometry.Circle.xml

Спасибо.

1      // Создание метки
    var myPlacemark = new ymaps.Placemark(
    // Координаты метки
    [29.563786,34.968236] , {
                    // Свойства
                    // Текст метки
                    hintContent: 'Эйлат'
                }, {
                    iconImageHref: 'http://www.diamond-tours-eilat.ru/maps/1nofon.png', // картинка иконки
                    iconImageSize: [44, 38], // размеры картинки
                    iconImageOffset: [-19, -23] // смещение картинки
                    });    
   
            myPlacemark.geometry.setCoordinates([29.563786,33.968236]);
    // Добавление метки на карту
    myMap.geoObjects.add(myPlacemark);

Так myPlacemark.geometry.setCoordinates  работает.

2 Но мне нужно чтобы координата менялась динамически, при вызове функции

function change()
     { 
 
        myPlacemark.geometry.setCoordinates([29.563786,33.968236]);

  } 

Так не работает.  myMap.geoObjects.add(myPlacemark);  это добавлял, все равно не работает

 

ВОПРОС Кто нибудь может показать работающий пример кода перемещения метки?

Код правильный.
Значит переменная myPlacemark не видна внутри функции change.
Прочитайте про видимость переменных в javascript

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

      function init () {
            // Создание экземпляра карты и его привязка к контейнеру с
            // заданным id ("map")
            var myMap = new ymaps.Map('map', {
                    // При инициализации карты, обязательно нужно указать
                    // ее центр и коэффициент масштабирования
                    center: [30.75,35.968236],
                    zoom: 7
                });
     // Создание метки
    var myPlacemark = new ymaps.Placemark(
    // Координаты метки
    [29.563786,34.968236] , {
                    // Свойства
                    // Текст метки
                    hintContent: 'Эйлат'
                }, {
                    iconImageHref: 'http://www.diamond-tours-eilat.ru/maps/1nofon.png', // картинка иконки
                    iconImageSize: [44, 38], // размеры картинки
                    iconImageOffset: [-19, -23] // смещение картинки
                    });    
   
           
    // Добавление метки на карту
    myMap.geoObjects.add(myPlacemark); 

 
        }
  
function change()
     { 
 
 alert('Меняем координаты метки');
        myPlacemark.geometry.setCoordinates([29.563786,33.968236]);
     myMap.geoObjects.add(myPlacemark);   

  }

Подсажите, пожалуйста

 

  Но я не соображу как сдлать чтоб она была видна

Поэтому я и говорю Вам, – прочитайте об этом. Как говорил герой одного мультфильма, —

"лучше день потерять, за то потом за 5 минут долететь"

 

Можно сделать переменную myPlacemark глобальной (объявить без "var") 

Спасибо всем. Сделал window.myPlacemark = new ymaps.Placemark

Работает.http://webmaster9.ru/freelance/maps/mymap.htm