2008-11-02 117 views
1

我想使用這個Virtual Earth JavaScript API實現我自己的羣集算法:http://msdn.microsoft.com/en-us/library/cc966716.aspx 但是,VE引擎爲圖層中的每個圖形調用一次羣集函數。這使它非常緩慢! 在我看來,VE應該把所有的形狀放到一個圖層中,然後讓我的函數把它們聚類在一起。不重複調用集羣!自定義虛擬地球羣集

爲什麼VE引擎會這樣做?有沒有另一種方法來使用此API進行客戶端羣集?

更多信息:我正在從GeoRSS源加載形狀。

回答

1

自定義聚類算法方法只會針對該VEShapeLayer調用一次。

Adam Byram, 使用VEMap.AddShape方法和將VEShapeLayer添加到具有所有Shapes的地圖之間沒有太大區別。 AddShape方法將Shape添加到「默認」ShapeLayer,該ShapeLayer是具有0(零)索引的ShapeLayer,添加VEShapeLayer除了添加現有的「默認」圖層外,還添加了新圖層。

如果您使用VEMap.AddShape將VEShape對象添加到地圖,則每次將VEShape添加到地圖時,都可能調用您的clusting算法方法。這將是正確的行爲,因爲每次添加形狀時都需要重新計算聚類。

在將所有形狀添加到地圖時提高總體性能,並且在添加所有形狀時僅讓VE調用您的自定義算法方法一次;您可以創建VEShapeLayer,將所有形狀添加到它,然後將該形狀圖層添加到地圖。這將導致VE只做一次所有形狀的渲染(在全部加載時),而不是每次添加單個VEShape。

1

它應該只爲每個VEShapeLayer調用一次您的代碼 - 否則,由於您無法聚集單個形狀,所以羣集毫無意義。您是否使用VEMap.AddShape而不是將VEShape對象添加到VEShapeLayer?如果是這樣,請嘗試創建單個VEShapeLayer,將其添加到VEMap,然後將所有VEShape對象添加到形狀圖層而不是地圖。