gpt4 book ai didi

javascript - Bing Map ShowInfoBox() 总是显示在 map 的中心?

转载 作者:行者123 更新时间:2023-12-02 20:38:39 25 4
gpt4 key购买 nike

下面附有 JavaScript 代码。两个图钉已添加到 Bing map 中。当它们悬停时,说明会显示在引脚旁边。添加两个按钮,并在单击事件上调用 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>

最佳答案

并不是说它不会设置 anchor ,而是 anchor 卡在您首先单击的纬度/经度上。尝试在点击之间进行缩放。你会发现它有效。

您需要做的是在显示之前抛出 HideInfoBox() 。

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

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

关于javascript - Bing Map ShowInfoBox() 总是显示在 map 的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com