Клуб API Карт

Геокодирование - получение по клику

Пост в архиве.
tazododu
8 апреля 2010, 17:39

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

все работает, вот только не получается реализовать получение и перемещение балуна по клику :(

может кто-нибудь посоветовать что-то путевое?..


ошибку пишет слудеющую:

mEvent.getGeoPoint is not a function

 


пытаюсь использовать тут http://zakupka.com/firm/6539/edit/ 
--------------------------------------------------------------------------------------------------------
 


$(document).ready(function() {
    YMaps.jQuery(function () {
        window["map"] = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
        var geocoder = new YMaps.Geocoder('Украина Мелитополь, ул. Карла Маркса, 2/2');
        YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
            geoResult = geocoder.get(0);
            var pointCenter = geoResult.getCoordPoint();
            $("#point").html(pointCenter+'');
            
            window["map"].setCenter(pointCenter, 12);
            window["map"].addControl(new YMaps.TypeControl());
            window["map"].addControl(new YMaps.Zoom());
            window["map"].enableScrollZoom();        
            
            placemark = new YMaps.Placemark(pointCenter, {draggable: true, hideIcon: false});
            setBalloonInfo(placemark, pointCenter, '');
            window["map"].addOverlay(placemark);

            YMaps.Events.observe(placemark, placemark.Events.Drag, function (mEvent) {
                setBalloonInfo(placemark, mEvent.getGeoPoint(), '');
            });
            
            YMaps.Events.observe(window["map"], window["map"].Events.Click, function (mEvent) {
                var newGeoPoint = mEvent.getGeoPoint();
                alert(placemark.setGeoPoint(newGeoPoint));
            });
            
        });
    });
});

function setBalloonInfo (placemark, geoPoint, number) {
    var content = "Переместите для переопределения <br /> местонахождения офиса";
    placemark.setBalloonContent(content);
    if($("#point"+number).html() != geoPoint.toString())
    {
        var reg = /,/;
        var str = geoPoint.toString();
        str = str.replace(reg, ", ");
        document.getElementById('geo'+number).value = str;
    }
}
function showAddress (value, i) {
    var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});
    YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
        if (this.length()) {
            geoResult = this.get(0);
            window["map"+i].setBounds(geoResult.getBounds());
        }else {
            alert("Ничего не найдено")
        }
    });
    YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
        alert("Произошла ошибка: " + error);
    })
}

 
5 комментариев
Вы хотите при щелчке на карту метку перемещать в новое положение?
ага, и считывать соответствующие координаты. но вот почему-то
В ЭТОМ СЛУЧАЕ mEvent.getGeoPoint() РАБОТАЕТ
YMaps.Events.observe(placemark, placemark.Events.Drag,
function (mEvent) {       setBalloonInfo(placemark,
mEvent.getGeoPoint(), '');
 });
а ВОТ ТУТ ПИШЕТ ОШИБКУ
YMaps.Events.observe(window["map"], window["map"].Events.Click,
function (mEvent) {
       var newGeoPoint =
mEvent.getGeoPoint();
      
alert(placemark.setGeoPoint(newGeoPoint));
 });
Глянь как в примере реализованно:
http://api.yandex.ru/maps/jsapi/examples/mapeventsarguments.html

function (map, mEvent)
спасибо, действительно помогло)
http://api.yandex.ru/maps/jsapi/doc/ref/reference/map.xml#event-Click
Первым параметр передается указатель на объект карты, а вторым - объект YMaps.MouseEvent.