2013-01-07 80 views
1

我建立一個互動地圖(使用WPF在ArcGIS API)的應用程序,在微軟Surface 2.0(現在稱爲PixelSense)運行。在我的應用程序中,我有一個librarycontainer,其中包含用戶可以拖出並放置在地圖上某個位置的元素。我通過將scatterview實現這個(即信封整個地圖)的地圖上的elementlayer,是這樣的:當一個用戶或縮小地圖縮放發生如何使用散點圖疊加可縮放地圖頂部的元素?

<esri:ElementLayer> 
    <esri:ElementLayer.Children> 
     <local:DragDropScatterView esri:ElementLayer.Envelope="-19949487.9573175,-20100080.1372686,20125528.7282505,20131479.5822274" x:Name="ScatterLayer" Background="Transparent" Height="Auto" Width="Auto" ItemContainerStyle="{StaticResource ScatterItemStyle}" /> 
    </esri:ElementLayer.Children> 
</esri:ElementLayer> 

存在的問題,從而導致具有元件被放置在分散視圖中以完全改變它們的位置。

要解決這個問題,我試着放置scatterview視框裏面。當我這樣做時,元素在地圖中保持正確的位置,但是現在出現了一個新問題:當我放大和縮小地圖時,元素會向上和向下縮放(例如,當地圖完全顯示時,元素幾乎看不見),而首選行爲是當用戶放大或縮小地圖時,元素保持其大小(例如,Google地圖中的標記)。

有沒有人有一個建議,我怎麼能解決這個問題?

乾杯

回答

1

而不是把ScatterView在視框,你應該做到以下幾點:一ScatterViewItem被放置在地圖上

  • 後,改變其Center點(這是在視口中座標)到世界座標(經度和緯度)的位置。 ArcGIS API應該提供這種轉換。

  • 當地圖縮放或以其他方式轉化,改造世界的每個位置回視座標,並相應設置每個ScatterViewItem的中心財產。

爲了存儲世界座標每個ScatterViewItem,您可以創建an attached property

+0

感謝您的及時回覆克萊門斯。我試着按照你的建議,但我仍然無法讓元素按預期行事。事實上,這些元素現在在平移和縮放時都很奇怪。如果我將一個元素放置在地圖的中心,然後稍微向左平移地圖(即將地圖拖到屏幕的右側),則該元素的移動距離與移動地圖的距離相同,但在錯誤的方向(即向右)。在縮放時,元素遠離最初指定的位置,儘管在這種情況下我看不到新定位中的任何邏輯。 – Polle

+0

然後,您應該檢查由ArcGIS API提供的轉換。你需要視座標經/緯度,反之亦然,和視口座標當然應該由相同的ScatterView座標,即左上角爲(0,0),X向右,Y下來。 – Clemens

+0

最後,我得到了克萊門斯的建議(儘管我必須略微抵消這些元素才能使它們正確定位)。非常感謝您的幫助Clemens。 – Polle

相關問題