我的谷歌地图应用程序有以下代码。我想要做的是能够点击或拖动标记并获得点(标记)的新位置(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;
});
答案 0 :(得分:1)
尝试将overlay
和point
参数添加到您的侦听器功能中,例如:
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;
});