过滤EntityCollection只能从map.targetBounds中获取可见的PushPins?

时间:2013-04-22 13:46:13

标签: javascript bing-maps

我正在使用v7 javascript Bing Maps API!

我有一个包含PushPins的EntityCollection。我想从map的当前视口中获取所有PushPins,或者从map.getTargetBound()中获取所有PushPins?

我有类似的东西,其中Geocode.pinLayer是一个EntityCollection对象,我已经为PushPins对象添加了一个id属性。不幸的是,pushPin.getVisible()只检查引脚是否在地图上,而不是在视口中:

`var visiblePins = [];
        for(var i=0; i<Geocode.pinLayer.getLength(); i+=1){
            if(Geocode.pinLayer.get(i).getVisible()){
                visiblePins.push(Geocode.pinLayer.get(i).id);
            }
        }
        return visiblePins;`

:)

1 个答案:

答案 0 :(得分:2)

除非我误解了你的问题,否则这应该很容易。

  1. 获取当前地图视图(端口):Map.getBounds()。你得到一个LocationRect对象。我们称之为LocationRectViewPort
  2. 获取图钉的位置:Pushpin.getLocation()。你得到一个Location对象。我们称之为PushPinLocation
  3. 查看PushPinLocation是否在LocationRectViewPort内。使用LocationRect.contains(),例如:
  4. if(LocationRectViewPort.contains(PushpinLocation))
    {
         // Do stuff
    }