2010-05-18 4 views
0

Код javascript приведен ниже. На карту Bing добавляются два push-штыря. Когда они зависают, описание отображается рядом с выводами. Две кнопки добавляются, и ShowInfoBox (форма) вызывается в событии клика. Когда кнопки нажимаются, по какой-то причине Infobox всегда появляется из центра независимо от того, где находятся кнопки. Это известная ошибка? Может ли кто-нибудь предложить обходной путь?Bing Map ShowInfoBox() всегда отображается в центре карты?

<!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> 
+0

Я не думаю, что вам нужно передать эти дополнительные два параметра в 'map.ShowInfoBox()' вы? Только форма ... –

ответ

2

Это не то, что он не будет установлен якорь, то, что якорь застрял на какой широты/долготы вы выбрали первый. Попробуйте масштабировать между щелчками. Вы увидите, что это работает.

Что нужно сделать, это сбросить HideInfoBox() прямо перед показом.

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

} 

Только примечание: установка формы в глобальном, а не прототипирования GetShapeByTitle() или что-то заставит вас горе, если масштабировании это. Если вы можете использовать VEMap.GetShapeByID(); и VEShape.GetID(); методы для динамического извлечения по данным формы, с ним (в конечном счете) будет легче справиться.

 Смежные вопросы

  • Нет связанных вопросов^_^