Bing Maps如何判断普通引脚位于哪个簇引脚内

时间:2017-03-09 21:45:06

标签: bing-maps

我正在考虑实施群集。我们有一个列表,当单击某个项目时,我们希望将其置于视图中心并在该引脚上弹出信息框。事情是,如果引脚当前已聚集,则信息框可能会出现在异位,因为群集是平均位置。

有没有办法从群集层获取群集引脚?

找到我的解决方案

    [Route("api/[controller]")]
    public class ValuesController : Controller
    {                  
        public async Task<ResponseInfoList> Method1([FromBody]RequestInfoList value)
        {
            return new ResponseInfoList() {};
        }

        public async Task<ResponseInfoList> Method2([FromBody]RequestInfoList value)
        {
            return new ResponseInfoList() { };
        }
    }

当群集推针回调时,您可以将其与主引脚上群集的引用相结合,以加快速度。

var PinYouAreMatching;//wherever you have this coming from
var primitives = clusterLayer.getPrimitives();
for(var i = 0;i < primitives.length;i++)
{
   if(primitives[i] instanceof Microsoft.Maps.ClusterPushpin)
   {
     var contained = primitives[i].containedPushpins;
     for(var j = 0;j < contained.length;j++)
     {
         if(PinYouAreMatching === contained[j])
         {
            //You found the cluster your pin is at eg. primitives[i].
         }
     }
   }
}

加速一些O(n ^ 2)或O(n)到O(n)或O(1)的东西。

1 个答案:

答案 0 :(得分:0)

如果将事件添加到群集图钉,事件处理程序将接收群集图钉,您可以使用它的位置来显示信息框。这是一个代码示例:

clusterLayer = new Microsoft.Maps.ClusterLayer(pins, {
    clusteredPinCallback: function(cluster){
        Microsoft.Maps.Events.addHandler(cluster, 'click', function(e){
            //This is how you get the location of the cluster.
            var loc = e.target.getLocation();

            //Show your infobox here
        });
    }
});