Я довольно новичок в javascript, и я застрял с этой проблемой в течение последних нескольких часов.
У меня есть один объект карты, и я прикрепляю к нему одно событие, поэтому, если пользователь нажимает на карту, я хочу получить координаты кнопки мыши. Затем я хочу, чтобы пользователь щелкнул другую точку на карте, чтобы получить вторую пару координат, затем я хочу нарисовать линию между этими двумя точками. Пока что я могу сделать это, щелкнув мышью по первой паре координат и получив вторую пару координат, прослушивая нажатие пользователем кнопки. Однако я хотел бы использовать два щелчка мыши. Один щелчок в местоположении 1, чтобы получить координаты 1, и один щелчок в местоположении 2, чтобы получить координаты 2. Каждый раз, когда у меня два события onclick, оба они запускаются сразу, и я просто получаю точку на карте. Я использую API карты Bing.
вот мой код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript"
src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?
v=6.2"></script>
<div><script type="text/javascript">
var map = null;
var pinid = 1;
var pixel = null;
var location = null;
var location2 = null;
var pixel2 = null;
var point1 = null;
var point2 = null;
var count = 0;
function doSomething(e) {
if (!e) var e = window.event;
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
PixelClick1();
}
function GetMap()
{
map = new VEMap('myMap');
map.LoadMap();
map.SetZoomLevel(10);
map.AttachEvent("onclick", PixelClick1);
//onclick="doSomething();PixelClick1; return false"
}
function onClick(){
count++;
}
function AddPolyline()
{
var shape = new VEShape(VEShapeType.Polyline, [location2,
location
]);
map.AddShape(shape);
shape.HideIcon();
point1 = new VEShape(VEShapeType.Polyline,[location,location]);
point2 = new VEShape(VEShapeType.Polyline, [location2, location2]);
point1.SetTitle('Point1 Location:');
point2.SetTitle('Point2 Location:');
point1.SetDescription('(Latitude: ' + location.Latitude + ',
Longitude: ' + location.Longitude + ')');
point2.SetDescription('(Latitude: ' + location2.Latitude + ',
Longitude: ' + location2.Longitude + ')');
point1.HideIcon();
point2.HideIcon();
map.AddShape(point1);
map.AddShape(point2);
}
function PixelClick1(e){
e.cancelBubble = true;
var x = e.mapX;
var y = e.mapY;
pixel = new VEPixel(x,y);
location = map.PixelToLatLong(pixel);
wait(e);
return false;
}
function PixelClick2(e){
var x = e.mapX;
var y = e.mapY;
pixel2 = new VEPixel(x,y);
location2 = map.PixelToLatLong(pixel2);
AddPolyline();
}
function ShowPushPin(){
point1.ShowIcon();
point2.ShowIcon();
}
function HidePushPin(){
point1.HideIcon();
point2.HideIcon();
}
function wait(){
map.AttachEvent("onkeydown",PixelClick2);
}
</script></div>
</head>
<body onload="GetMap();">
<div id='myMap' style="position:relative; width:400px;
height:400px;"></div>
<div><a href='#' onclick='ShowPushPin();'>Show Pushpins</a></div>
<div><a href='#' onclick='HidePushPin();'>Hide Pushpins</a></div>
</body>
</html>