【发布时间】:2010-08-01 20:49:39
【问题描述】:
我有以下代码,可让用户在 Google MAP 上绘制两个点。然后,我希望能够捕捉每个点(标记)被拖动到新位置的事件。我不擅长 Javascript,并且花了好几个小时试图做到这一点,所以我认为是时候获得一些帮助了..
我想要做的是让用户在地图上绘制两个可拖动的点(标记)。然后我希望能够让我的脚本将位置(纬度,经度)写入文档。然后,我将计算它们之间的距离,作为我正在制作的运输应用程序的一部分。
我希望在将标记(点)拖到新位置时更新文档的内容(纬度、经度)。
另外,我修复了一个男生错误,其中点变量在 switch 语句中被贴花。我的问题是通过在 switch 语句中移动 Add 事件侦听器语句来解决的。谢谢炮弹:)
接下来是尝试计算两点之间的距离(乌鸦苍蝇)
再次感谢您的帮助.. 一如既往的感谢!
更新的有效代码:
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');
});
break;
case 1:
point2 = new GMarker(point,{draggable: true});
map.addOverlay(point2);
cCount++;
GEvent.addListener(point2, "dragend", function()
{
alert('P2 Dragged');
});
break;
case 2:
map.clearOverlays();
cCount=0;
break;
}
}
});
map.addControl(new GSmallMapControl());
geocoder = new GClientGeocoder();
}
}
【问题讨论】:
-
cCount 在哪里定义?开头的 if 语句关闭了 addListener,所以剩下的代码就挂了。你能澄清一下你想要做什么吗?
-
所以,我更新了这篇文章,使其更有意义。很抱歉第一次运行,我有点压力。
标签: google-maps