Javascript Onclick信息框-bing地图api
我很难让bing API的信息框在地图外点击打开 以下是show infobox函数和创建pin/infobox本身的函数:Javascript Onclick信息框-bing地图api,javascript,hta,bing-maps,Javascript,Hta,Bing Maps,我很难让bing API的信息框在地图外点击打开 以下是show infobox函数和创建pin/infobox本身的函数: function displayInfobox(e) { pinInfobox.setOptions({ title: e.target.Title, description: e.target.Description, visible: true, offset: new Microsoft.Maps.Point(0, 25) }); pinInfobox.setLo
function displayInfobox(e) {
pinInfobox.setOptions({
title: e.target.Title,
description: e.target.Description,
visible: true,
offset: new Microsoft.Maps.Point(0, 25)
});
pinInfobox.setLocation(e.target.getLocation());
}
function hideInfobox(e) {
pinInfobox.setOptions({
visible: false
});
}
function displayPinsOnMap(results) {
// Creates a collection to store multiple pins
var pins = new Microsoft.Maps.EntityCollection();
//Create the info box for pushpin
var infoboxOptions = {width: 260, height:160};
pinInfobox = new Microsoft.Maps.Infobox(new Microsoft.Maps.Location(0, 0), infoboxOptions);
infoboxLayer.push(pinInfobox);
// Create Pins
for (var i = 0; i < results.length; i++) {
//pushpin location
var position = new Microsoft.Maps.Location(results[i]["Lat"], results[i]["Lon"]);
//Create the pin
if(results[i]["DNC"] == 'DNC') {
var sppins = {htmlContent:"<img src='badsp.png' height='32px'> " };
} else {
var sppins = {htmlContent:"<img src='sppin.png' height='32px'> " };
}
var pin = new Microsoft.Maps.Pushpin(position, sppins);
pin.Title = results[i]["Business Name"];
pin.Description =results[i]["Address"] + "<br>" +
results[i]["City"] + ", " +
results[i]["StateListing"] + "<br>" +
results[i]["Phone"] +
"<br>Fax: " + results[i]["Fax"] +
"<br>Email: " + results[i]["Email"];
Microsoft.Maps.Events.addHandler(pin, 'click', displayInfobox);
function pinclick(i) {
Microsoft.Maps.Events.addHandler(results[i], 'click');
}
//Add pin to the map
map.entities.push(pin);
}
//hide box on map move
Microsoft.Maps.Events.addHandler(map, 'viewchange', hideInfobox);
//add pins/infobox
map.entities.push(pinInfobox);
}
功能显示信息框(e){
pinInfobox.setOptions({
标题:e.target.title,
描述:e.target.description,
可见:对,
偏移量:新的Microsoft.Maps.Point(0,25)
});
setLocation(例如target.getLocation());
}
函数隐藏信息框(e){
pinInfobox.setOptions({
可见:假
});
}
函数显示PinsonMap(结果){
//创建一个集合以存储多个管脚
var pins=新的Microsoft.Maps.EntityCollection();
//为图钉创建信息框
var infoboxOptions={宽度:260,高度:160};
pinInfobox=new Microsoft.Maps.Infobox(new Microsoft.Maps.Location(0,0),infoboxOptions);
infoboxLayer.push(pinInfobox);
//创建别针
对于(var i=0;i”+
结果[i][“城市”]+“,”+
结果[i][“状态列表”]+“
”+
结果[i][“电话”]+
“
传真:”+结果[i][“传真”]+
“
电子邮件:“+results[i][“Email”];
Microsoft.Maps.Events.addHandler(pin,'click',displayInfobox);
函数pinclick(i){
Microsoft.Maps.Events.addHandler(结果[i],“单击”);
}
//在地图上添加pin
地图。实体。推(销);
}
//地图移动时隐藏框
Microsoft.Maps.Events.addHandler(映射'viewchange',HideInfo框);
//添加pins/infobox
map.entities.push(pinInfobox);
}
我有一个从JSON文件中提取并显示在地图上的项目列表。每个项目都会创建一个pin和信息框,并在地图一侧的表格中创建。我需要做的是从表中单击公司名称,我需要它打开与该公司关联的信息框。以下是我过去使用谷歌API的做法——这似乎与Bing的工作方式不同(是的,我必须使用Bing)
“”+“”+results[i][“业务名称”]+“”
您似乎从某些代码中复制了displayInfobox函数,这些代码在有人单击图钉时会触发,因为该函数包含以下代码:
setLocation(例如target.getLocation())
getLocation()方法存在于Bing Maps pushpin对象上,但显然不存在于您的上,因此当它到达该行时将失败(您是否正在使用浏览器调试工具?)。您需要更改该行,以便它从某处获取信息框显示的位置,要么将lat lon作为你的属性,并使用这些属性构建一个新的Bing Maps位置对象,要么通过在地图上的所有管脚循环找到一个在某种程度上与你匹配的管脚啊,你知道我没有想到这一点。这很有道理。谢谢你的帮助!
"<td>"+'<a href="#" onclick="javascript:displayInfobox(' + (i) + ');">' + results[i]["Business Name"] +'<\/a>' + "</td>"