Google会映射如何拖动,点击标记点

时间:2010-02-26 14:06:16

标签: google-maps

我的谷歌地图应用程序有以下代码。我想要做的是能够点击或拖动标记并获得点(标记)的新位置(LatLong)。

在我做任何事情的那一刻,我得到了37.4419,-122.1419的坐标。我确信这是因为它被称为中心。如何获取刚触发/拖动,点击的事件/标记的坐标?

请原谅我,因为我对Javascript和Google地图API都非常不熟悉。

代码:

        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 个答案:

答案 0 :(得分:1)

尝试将overlaypoint参数添加到您的侦听器功能中,例如:

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

答案 1 :(得分:1)

更新:我已经解决了这个问题。您可以看到关于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;
                            });