【问题标题】:Bing Maps v8 pushpin tooltip必应地图 v8 图钉工具提示
【发布时间】:2019-06-11 00:28:14
【问题描述】:

我开始将我的代码从 Bing Maps AJAX v7 API 迁移到新的 v8,但有些事情发生了变化。我现有的将工具提示添加到图钉的代码不再起作用。有人解决过这个问题吗?

【问题讨论】:

    标签: javascript bing-maps


    【解决方案1】:

    我想通了。由于新控件是在 html5 画布内绘制的,因此无法通过正常方式访问这些控件。但我使用信息框控件来模仿工具提示。代码:

    html

    <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?callback=getMap' async defer></script>
    

    javascript:

    function getMap() {
       PanningRectLimit = Microsoft.Maps.LocationRect.fromCorners(new Microsoft.Maps.Location(30.181359, -95.662621), new Microsoft.Maps.Location(29.603220, -95.077050));
    
       MapOptions = {
        credentials: "yourkey", center: new Microsoft.Maps.Location(29.871261, -95.364891), showLocateMeButton: false, maxBounds: PanningRectLimit,
        mapTypeId: Microsoft.Maps.MapTypeId.road, zoom: 9, enableClickableLogo: false, tileBuffer: 2, showMapTypeSelector: false, useInertia: false, enableSearchLogo: false, disableKeyboardInput: true
    };
    
       map = new Microsoft.Maps.Map(document.getElementById("MapPlace"), MapOptions);
    
       LayerOffices = new Microsoft.Maps.Layer({ visible: true, zIndex: 2 });
       infobox = new Microsoft.Maps.Infobox(LastValidLocation, { description: 'description', showCloseButton: false, showPointer: false });
    
       var off1 = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(mylat, mylng), { typeName: 'Office1', enableHoverStyle: true });
       var off2 = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(mylat2, mylng2), { typeName: 'Office2', enableHoverStyle: true });
    
       Microsoft.Maps.Events.addHandler(off1 , 'mouseover', tooltipPin);
       Microsoft.Maps.Events.addHandler(off2 , 'mouseover', tooltipPin);
       Microsoft.Maps.Events.addHandler(off1 , 'mouseout', tooltipPin2);
       Microsoft.Maps.Events.addHandler(off2 , 'mouseout', tooltipPin2);
    
       LayerOffices.add(off1);
       LayerOffices.add(off2);
    
       map.layers.insert(LayerOffices);
    }
    
    
    function tooltipPin(e) {
       var loc = e.target.getLocation();
       infobox.setMap(map);
       infobox.setLocation(loc);
       infobox.setHtmlContent('<div id="infoboxText" style="background-color:White; border-style:solid; border-width:medium; border-color:DarkOrange; min-height:40px; width: 150px; "><p id="infoboxDescription" style="position: absolute; top: 10px; left: 10px; width: 220px; ">mydescription</p></div>');
    };
    
    
    function tooltipPin2(e) {
       infobox.setHtmlContent('<div></div>');
    };
    

    【讨论】:

    • 感谢 BernieSF,在添加了一些被忽略的变量声明后,我能够使您的代码正常工作,即 `var LastValidLocation = new Microsoft.Maps.Location(29.603220, -95.077050); var mylat = 29.871261; var mylng = -95.364891; var mylat2 = 29.71261; var mylng2 = -95.64891;
    • 这绝对是一个小问题,你的技术很有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多