Клуб API Карт

Одна точка

hofg2008
8 октября 2009, 22:08

 

Друзья, здравствуйте. Такой вопрос. На карте ставятся точки. Перетаскиваются. Но задача у меня, сделать так, чтобы можно было поставить на карту только одну точку. А в нижеприведенном коде ставится куча точек. Что нужно добавить в код, чтобы когда кликаешь на карту (точка на ней уже в это время существует), старая точка пропадала, а новая появлялась в том месте, куда кликнул? Заранее преблагодарен.


<script type="text/javascript">

        window.onload = function () {

            map = new YMaps.Map(document.getElementById("YMapsID"));

            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);


            YMaps.Events.observe(map, map.Events.Click, function (mEvent) {

            var placemark = new YMaps.Placemark(mEvent.getGeoPoint(), {draggable: true});

            map.addOverlay(placemark); 

            

            YMaps.Events.observe(map, map.Events.Click, function (mEvent) {

            map.addOverlay(placemark);

            });


            YMaps.Events.observe(placemark, placemark.Events.DragStart, function () {});

            YMaps.Events.observe(placemark, placemark.Events.Drag, function (mEvent) {

                placemark.setBalloonContent(mEvent.getGeoPoint().toString());

            });


            YMaps.Events.observe(placemark, placemark.Events.DragEnd, function () {});

            });

        }

</script>

 

4 комментария
Подписаться на комментарии к посту
1-х сделать placemark глобальной переменной. 2-х убирать все события, а оставить только клик по карте 3-х в обработчике клика сделать смену положения для placemark Как это сделать можно посмотреть здесь: http://api.yandex.ru/maps/jsapi/doc/ref/reference/placemark.xml#setGeoPoint Код будет такой (примерно, так как не проверял)
Какой? Вдимо сообщение обрезалось.
Вот пример: http://scripts.pws.ru/maps/onepoint.php Код можно посмотреть в исходнике страницы
Можно сделать вот так:

YMaps.jQuery(function () {
    var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);           
    map.setCenter(new YMaps.GeoPoint(37.609218,55.913559),10);
   
    var placemark = new YMaps.Placemark(map.getCenter(), {draggable : true});
    map.addOverlay(placemark);
    YMaps.Events.observe(map, map.Events.Click, function (map, e) {
        placemark.setGeoPoint(e.getGeoPoint());
    });           
});