如何在 V8 模块的聚类图中设置自定义图钉和信息框

How can i set custom pushpin and infobox in clustering map in V8 Module

在 V7 Bing 地图中,您提供了在下面 link

的聚类地图中自定义添加图钉和信息框的功能

https://www.bingmapsportal.com/isdk/ajaxv7#LoadingDynamicModule3

但是在 V8 中 bing map Microsoft 没有提供如何在聚类地图中设置图钉和信息框。

http://www.bing.com/api/maps/sdk/mapcontrol/isdk#clusteringMeanAverage+TS

能否提供聚类图中图钉和信息框的示例代码?

提前致谢

对于单个图钉,您可以在将它们添加到聚类层之前自定义它们,聚类层将简单地呈现它们。不需要像旧的 v7 模块那样的回调。自定义群集图钉时仍会使用回调。

对于信息框,只需将点击事件添加到图钉和群集,当事件触发时,您可以加载信息框。这真的很简单。此外,您在应用程序中只需要一个信息框,并根据点击的内容简单地更新它的内容。

完整的文档也可以在这里找到:https://msdn.microsoft.com/en-us/library/mt712542.aspx

下面是一个示例,说明如何使用元数据 属性 通过图钉存储数据并向图钉添加点击事件以打开信息框:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script type='text/javascript' 
            src='http://www.bing.com/api/maps/mapcontrol?callback=GetMap' 
            async defer></script>
    <script type='text/javascript'>
    var map, infobox;

    function GetMap() {
        map = new Microsoft.Maps.Map('#myMap', {
            credentials: 'Your Bing Maps Key'
        });

        //Create an infobox at the center of the map but don't show it.
        infobox = new Microsoft.Maps.Infobox(map.getCenter(), {
            visible: false
        });

        //Assign the infobox to a map instance.
        infobox.setMap(map);

        //Create a pushpin in the at a random location in the map bounds.
        var randomLocation = Microsoft.Maps.TestDataGenerator.getLocations(1, map.getBounds());
        var pin = new Microsoft.Maps.Pushpin(randomLocation);

        //Store some metadata with the pushpin.
        pin.metadata = {
            title: 'Pin Title',
            description: 'Pin discription'
        };

        //Add an click event handler to the pushpin.
        Microsoft.Maps.Events.addHandler(pin, 'click', pushpinClicked);

        //Add pushpin to the map.
        map.entities.push(pin);
    }

    function pushpinClicked(e) {
        //Make sure the infobox has metadata to display.
        if (e.target.metadata) {
            //Set the infobox options with the metadata of the pushpin.
            infobox.setOptions({
                location: e.target.getLocation(),
                title: e.target.metadata.title,
                description: e.target.metadata.description,
                visible: true
            });
        }
    }
    </script>
</head>
<body>
    <div id="myMap" style="position:relative;width:600px;height:400px;"></div>
</body>
</html>