Клуб API Карт

Помогите переделать код с API 1 на API 2

Пост в архиве.
WOLFphantom
9 апреля 2013, 05:06

Доброго всем времени суток!

У меня есть один небольшой код написанный для api1, вот он:

<script type="text/javascript">
    YMaps.jQuery(function () {
        var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
        var center = YMaps.jQuery(':input[name="field_koordinaty"]').val() || "37.677751,55.757718";
        map.setCenter(YMaps.GeoPoint.fromString(center), 12);
        map.addControl(new YMaps.SmallZoom());
        map.addControl(new YMaps.TypeControl());
        // Метка, отмечающая центр карты
        var centerPlacemark = new YMaps.Placemark(map.getCenter(), {
            style: {
                iconStyle: {
                    href: "http://api.yandex.ru/i/maps/icons/center.gif",
                    size: new YMaps.Point(16, 16),
                    offset: new YMaps.Point(-8, -8)
                }
            },
            interactive: YMaps.Interactivity.NONE
        });
        map.addOverlay(centerPlacemark);
        // Перемещение метки в центр при любом сдвиге карты
        // Запись координат центра в строку координат
        YMaps.Events.observe(map, [map.Events.Move, map.Events.BoundsChange], function () {
            centerPlacemark.setGeoPoint(map.getCenter());
            YMaps.jQuery(':input[name="field_koordinaty"]').val(map.getCenter());
        });
    });
</script>
<div id="YMapsID" style="height:300px"></div>

 

Этот код отображает карту со значном в центре и при перетягивании карты следит чтобы значек оставался в центре и самое основное записывает координаты центра в input name="field_koordinaty"

Это вполне удобный способ забивать координаты в базу для последующего отображения.

 

Появилась необходимость перенести сие творение на api2 но у меня не получается. Если вдруг кому не трудно помогите пожалуйста переписать это на  api 2.

8 комментариев
читали руководство по переходу?
http://api.yandex.ru/maps/doc/jsapi/2.x/update/concepts/update.xml

покажите как Вы пробовали переносить и что именно не получается?

Читаю руководство, пробую, но пока получается только отобразить карту и значек в центре неё, а вот сделать что-то с событием сдвига карты и загрузить координаты центра из input если они там есть не получается.
Вот что имею на данный момент:

 




 

прочитайте про события карты.
вам нужен boundschange

типа того:
myMap.events.add('boundschange', function (e) {
centerPlacemark.geometry.setCoordinates(myMap.getCenter());
});

Спасибо за подсказку добился перемещения значка в центр при здвиге карты, правда работает не совсем так как надо. Обработка события происходит после того как нажал кнопку, перетащил карту, отпустил кнопку и после этого значек прыгает в центр карты, это не очень удобно, а было так что он всегда оставолся в центре во время сдвига карты.
Может еще подскажете как записывать значения в input name="field_koordinaty"
На данный момент имею:

 

myMap.events.add('boundschange', function (e) { //обрабатываем событие сдвига карты
centerPlacemark.geometry.setCoordinates(myMap.getCenter()); //перемещаем значек в центр карты
ymaps.jQuery('input[name="field_koordinaty"]').val(myMap.getCenter()); //НЕ РАБОТАЕТ записываем значения центра карты в  input name="field_koordinaty"
});

 

Нашел пример где вроде бы есть подобное но немогу победить. http://api.yandex.ru/maps/doc/jsapi/2.x/examples/geoobjectevents.html

 

 

jQuery во второй версии больше не входит в АПИ.

Вам нужно подключить его отдельно.

Чтобы метка двигалась при перетаскивании карты, попробуй заменить 'boundschange' на ['actiontick', 'boundschange']

 

myMap.events.add(['actiontick', 'boundschange'], function (e) { //обрабатываем событие сдвига карты    var center = myMap.getCenter();
    centerPlacemark.geometry.setCoordinates(center); // перемещаем значек в центр карты    $('input[name="field_koordinaty"]').val(center); // записываем значения центра карты в  input name="field_koordinaty"});

Не, с использованием  ['actiontick', 'boundschange'] карта вообще себя неадекватно ведет, сантиметр сдвига карты уводит её вообще в соседнее государство.

Эта строчка $('input[name="field_koordinaty"]').val(center); тоже не работает, или может что еще надо дописать чтобы это работало?
jQuery подключен:

но и с подключенным  jQuery эта: ymaps.jQuery('input[name="field_koordinaty"]').val(myMap.getCenter()); строчка не работает.

Если не сложно распишите немного подробнее, а то я полный чайник в ява скриптах, да и api яндекса тоже почти незнаю.

дайте ссылку я посмотрю

Выгрузил в сеть заработала запись координат в input, сдвиг карты стал адекватным (почему локально так себя вело незнаю) но правда до сих пор картинка прыгает после отпускания клавиши мыши в центр а не остается там всегда.

Всё равно спасибо огромное, Вы мне очень помогли.