Google карты, как получить точку перетаскивания маркера, нажал - PullRequest
0 голосов
/ 26 февраля 2010

У меня есть следующий код для моего приложения Google Maps. Что я хочу сделать, так это уметь щелкать или перетаскивать маркеры и получать новую позицию (LatLong) точки (маркера).

В тот момент, когда я делаю что-то подобное, я получаю координаты 37.4419, -122.1419. Я уверен, что это потому, что он указан как центр. Как получить координаты события / маркера, который был только что запущен / перетащен, нажал?

Пожалуйста, извините меня, поскольку я очень неопытен как с Javascript, так и с API карт Google.

Код:

        var map = null;
    var geocoder = null;
    var zoom = 15;
    var first_point = false;
    var boundary =  new Array();
    var cCount = 0;

    var point1;
    var point2;

    function initialize() {
        if (GBrowserIsCompatible()) {
            first_point = false;
            map = new GMap2(document.getElementById("map_canvas"));
            var center = new GLatLng(37.4419, -122.1419);
            map.setCenter(center, zoom);

            GEvent.addListener(map, "click", function(overlay,point)
            {
                if (overlay != null)
                {}
                else
                {
                    var n = boundary.length;

                    switch (cCount)
                    {
                        case 0:
                            point1 = new GMarker(point,{draggable: true});
                            map.addOverlay(point1);
                            cCount++;
                            GEvent.addListener(point1, "dragend", function()
                                {
                                    alert('P1 Dragged: '+point);
                                });

                            break;
                        case 1:
                            point2 = new GMarker(point,{draggable: true});
                            map.addOverlay(point2);
                            cCount++;
                            GEvent.addListener(point2, "dragend", function()
                                {
                                    alert('P2 Dragged: '+point);
                                });
                            break;
                        case 2:
                            map.clearOverlays();
                            cCount=0;
                            break;
                    } 
                }
            });
        }
    }

ОБНОВЛЕНИЕ: я решил эту проблему. Вы видите, что в отношении объекта GMarker, dragend, click и других событий объект GLatLng передается как параметр. Поэтому, если я хочу получить точку, я вызываю param.lat () или param.lng (). Смотрите код здесь:

                                GEvent.addListener(point2, "dragend", function(pnt)
                                {
                                    alert('P2 Dragged: '+pnt.lat()+" , "+pnt.lng());
                                    document.getElementById("point2").innerHTML="";
                                    document.getElementById("point2").innerHTML=point;
                                });

Ответы [ 2 ]

1 голос
/ 26 февраля 2010

ОБНОВЛЕНИЕ: я решил эту проблему. Вы видите, что в отношении объекта GMarker, dragend, click и других событий объект GLatLng передается как параметр. Поэтому, если я хочу получить точку, я вызываю param.lat () или param.lng (). Смотрите код здесь:

                            GEvent.addListener(point2, "dragend", function(pnt)
                            {
                                alert('P2 Dragged: '+pnt.lat()+" , "+pnt.lng());
                                document.getElementById("point2").innerHTML="";
                                document.getElementById("point2").innerHTML=point;
                            });
1 голос
/ 26 февраля 2010

Попробуйте добавить overlay и point params к вашим функциям прослушивателя, например:

GEvent.addListener(point2, "dragend", function(overlay, point)
{
  alert('P2 Dragged: '+point);
});
...