Клуб API Карт

Удаление и добавление координат

plavsky.denis
18 июня 2015, 11:15

Почему-то удалени  и добавление координат работает один раз.Не могу понять почему. Метод SetCoordinates() не подскажете в чем может быть причина.

 

$(function() {

    ymaps.ready(init);

    var myMap;

    var myPlacemark;

    var havePlacemark = false;

 

    function init() {

        myMap = new ymaps.Map("map", {

            center: [53.9172, 27.5601],

            zoom: 11,

            behaviors: ['default', 'scrollZoom']

        }, {

            balloonMaxWidth: 200

        });

 

        myMap.controls.add('zoomControl');

        myMap.controls.add('searchControl');

        myMap.controls.add('typeSelector');

 

        //присвоение  коодинат при клике  

        myMap.events.add('click', function(e) {

            if (!havePlacemark) {

                var coords = e.get('coordPosition');

                myPlacemark = new ymaps.Placemark([coords[0].toPrecision(6), coords[1].toPrecision(6)],

                {},

                {

                    draggable: true

                });

                myMap.geoObjects.add(myPlacemark);

                havePlacemark = true;

            }

 

 

            var str = String(coords[0].toPrecision(6));

            str = str.replace('.', ',');

            $("#Shirota").val(str);

            str = String(coords[1].toPrecision(6));

            str = str.replace('.', ',');

            $("#Dolgota").val(str);

 

 

            //присвоение коодинат при перетаскивание метки  

            myPlacemark.events.add('dragend', function(e) {

                var coords = myPlacemark.geometry.getCoordinates();

                var str = String(coords[0].toPrecision(6));

                str = str.replace('.', ',');

 

                $("#Shirota").val(str);

                str = String(coords[1].toPrecision(6));

                str = str.replace('.', ',');

 

                $("#Dolgota").val(str);

            });

        });

 

        //присвоение координат при задание координат в инпутах

        function SetCoordinates() {

 

            if ($("#Shirota").val() != "" && $("#Dolgota").val() != "") {

                //удалить обьект

                if (myPlacemark != undefined) {

                    myMap.geoObjects.remove(myPlacemark);

                }

                //присвоить обьект

                myPlacemark = new ymaps.Placemark([$("#Shirota").val(), $("#Dolgota").val()],

                {},

                {

                    draggable: true

                });

                myMap.geoObjects.add(myPlacemark);

            }

        }

 

        $("#Shirota").change(function() {

                SetCoordinates();

            }

        );

 

        $("#Dolgota").change(function() {

                SetCoordinates();

            }

        );

    }

});

 

3 комментария
Подписаться на комментарии к посту

Мы не умеем выполнять код в голове, лучше давать ссылку, чем постить 2 экрана гениального кода, разрывая другим пользователям ленту.

 

Пока не могу понять почему оно вообще должно работать. Вы создаете метку, подписываетесь на drag, потом создаете другую метку, старую удаляете, не удаляя обработчик драга, и что должно произойти?

Новую метку вы на drag не подписали, или она сама должна была это сделать?

 

 

извенюсь затупизм,что вы подразумевается под drag

Я имею ввиду dragend

myPlacemark.events.add('dragend', function(e) {