Uncaught TypeError: Cannot read property 'add' of undefined :: javascript :: bing maps -
so having problems displayinfobox function. looking bing maps v8 api trying link events infobox. following bing , storing event handlers in infobox object. im getting read property 'add' error.
in in stacktrace, taking me either line adding event handler, or when im checking if infobox has events attached it.
i trying follow script here https://blueric.wordpress.com/2011/03/10/creating-hover-style-info-boxes-on-the-bing-maps-ajax-v7-0-control/. given quite old, assume things might work in similar ways.
edited:
it seems has addhandler im confused on.
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 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 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); }
edited (latest): seems there bug bing v8 or change in way code processed. have copied of code fiddle project , works fine in v7. going manually.
i post working code once, completed.
the issue infobox class doesn't have mouseleave or mouseenter events. such, when try adding event handers this, "add" part of step fails because these events don't exist.
Comments
Post a Comment