このdisplayinfobox関数に問題があります。私はBing Maps v8 APIを使って、イベントをInfoboxにリンクしようとしていました。私はBingに従い、インフォボックスオブジェクトにイベントハンドラを格納しています。この読み込みプロパティに「追加」エラーが表示されます。Uncaught TypeError:undefined :: javascript :: bingマップのプロパティ 'add'を読み取れません
stacktraceでは、イベントハンドラを追加している行か、infoboxにイベントが接続されているかどうかを確認しているときのどちらかに移動しています。
私はここでこのスクリプトに従おうとしていますhttps://blueric.wordpress.com/2011/03/10/creating-hover-style-info-boxes-on-the-bing-maps-ajax-v7-0-control/。それはかなり古く、私は物事は同様の方法で動作するかもしれないと仮定します。
編集:
それは上の混乱イムはaddHandlerとは何かを持っているように思えます。
function displayInfoBox(e) {
stopInfoBoxTimer(e);
console.log("after Infobox Timer");
if (_displayInfoType != "INFOBOX")
return;
var replaceContent = infoboxTemplate;
var ticket = e.target.ticket;
var contentHead = "<ul>";
var contentEnd = "</ul>";
var content = "";
content += "<li><b>:</b> " + ticket.{REMOVED VAR} + "</li>";
content += "<li><b>:</b> " + ticket.{REMOVED VAR} + "</li>";
content += "<li><b>:</b> " + ticket.{REMOVED VAR} + "</li>";
content += "<li><b>:</b> " + ticket.{REMOVED VAR} + "</li>";
content += "<li><b>:</b> " + ticket.{REMOVED VAR}+ "</li>";
content += "<li><b>:</b> " + ticket.{REMOVED VAR}+ "</li>";
content += "<li><b>:</b> " + ticket.{REMOVED VAR}+ "</li>";
if (ticket.WW_PK != "")
content += "<li><b>:</b> " + ticket.{REMOVED VAR}+ ", " + ticket.{REMOVED VAR}+ "</li>";
else
content += "<li><b>: <span style='color:red;'>{REMOVED VAR}</span></b></li>";
replaceContent = replaceContent.replace('{title}', ticket.{REMOVED VAR});
replaceContent = replaceContent.replace('{content}', contentHead + content + contentEnd);
console.log("after replaced content");
var options = {
offset: new Microsoft.Maps.Point(23, 173),
location: e.target.getLocation(),
htmlContent: replaceContent,
visible: true
};
console.log(options);
console.log("before removing events from infobox");
if (infobox != null && infobox.mouseLeaveHandler != null && infobox.mouseEnterHandler != null) {
if (Microsoft.Maps.Events.hasHandler(infobox, 'mouseleave'))
Microsoft.Maps.Events.removeHandler(infobox.mouseLeaveHandler);
if (Microsoft.Maps.Events.hasHandler(infobox, 'mouseenter'))
Microsoft.Maps.Events.removeHandler(infobox.mouseEnterHandler);
infobox = null;
}
console.log("after removing events from infobox");
console.log(infobox);
infobox = new Microsoft.Maps.Infobox(location, options);
//-------------------------- ERROR IN HERE ---------------------------------
infobox.mouseLeaveHandler = Microsoft.Maps.Events.addHandler(infobox, 'mouseleave', infoBoxMouseLeave);
infobox.mouseEnterHandler = Microsoft.Maps.Events.addHandler(infobox, 'mouseenter', infoBoxMouseEnter);
//-------------------------- ERROR IN HERE ---------------------------------
console.log(infobox.mouseEnterHandler);
infobox.setMap(map);
}
編集(LATEST):ビングV8またはこのコードが処理される方法で、ちょうど変更にバグがあるようにそれはそう。私はコードの大部分をバイリンガルのプロジェクトにコピーし、v7で正常に動作します。だから私は手動でこれを行うつもりです。
作業コードを1回転記します。これは完了です。
投稿コードに 'add'プロパティがないようですね。 – adeneo
@adeneo - 'add 'を呼び出すものもありません。よくわかりません。また、ERROR IN HEREには 'infobox.setMap(map);がありますが、' map'は存在しません。 – vlaz
@adeneoこれは、Microsoftコードでエラーを投げるOPの悪い引数かもしれません。 – gcampbell