0

javascript代码附在下面。将两个图钉添加到 Bing 地图。当它们悬停时,说明会显示在图钉旁边。添加了两个按钮,并在单击事件上调用 ShowInfoBox(shape)。当单击按钮时,出于某种原因,无论图钉在哪里,信息框总是从中心弹出。这是一个已知的错误?任何人都可以提出解决方法吗?

<!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>
  <script type="text/javascript">
  var shape;
  var shape1;

 var map = null;
 var infobox = "You can add html codes into the info box or change the style of the info box. You can design and show any info box you want!<br>";

 function ShowInfoBox(sh)
 {
    // The anchor param does not seem to have any effect ???
    map.ShowInfoBox(sh, new VELatLong(sh.Latitude, sh.Longitude), new VEPixel(0, 0));

 }

 function HideInfoBox()
 {
    map.HideInfoBox();
 }


 function GetMap()
 {
    map = new VEMap('myMap');

    map.LoadMap(new VELatLong(47.610377,  -122.200679), 14, VEMapStyle.Road, false, VEMapMode.Mode2D, true);

    shape = new VEShape(VEShapeType.Pushpin, map.GetCenter());


    shape.SetTitle("<h2>Custom Pin0</h2>");
    shape.SetDescription(infobox);

    //Add the shape the the map
    map.AddShape(shape);

    shape1 = new VEShape(VEShapeType.Pushpin, new VELatLong(47.612379,  -122.201677));

    shape1.SetTitle("<h2>Custom Pin1</h2>");
    shape1.SetDescription(infobox);

    //Add the shape the the map
    map.AddShape(shape1);
 }

 </script>
 </head>
 <body onload="GetMap();">
  <div id='myMap' style="position:relative; width:400px; height:400px;"></div>
  <input type="button" value="1" onclick="ShowInfoBox(shape);">
  <input type="button" value="2" onclick="ShowInfoBox(shape1);">
 </body>
</html> 
4

1 回答 1

2

不是它不会设置锚点,而是锚点卡在您首先单击的任何纬度/经度上。尝试在点击之间进行缩放。你会看到它有效。

您需要做的是在演出前将 HideInfoBox() 扔进去。

函数显示信息框(sh)
 {
    // 锚参数似乎没有任何作用 ???
    隐藏信息框();
    map.ShowInfoBox(shape,new VELatLong(sh.Latitude, sh.Longitude));

 }

请注意:将您的形状设置为全局而不是原型化 GetShapeByTitle() 或其他东西,如果您将其放大,您会感到悲伤。如果可以使用 VEMap.GetShapeByID(); 和 VEShape.GetID(); 通过形状数据动态检索的方法,它将(从长远来看)更容易处理。

于 2010-06-01T18:36:05.470 回答