2012-11-01 89 views
2

我使用全新的Windows Phone 8 Map控件,但遇到了一個問題:我需要獲取地圖邊界的LocationRectangle,換言之,緯度跨度和經度跨度。Windows Phone 8地圖控制 - 如何獲取地圖範圍

隨着Bing地圖的控制,你可以做:

LocationRect bounds = map.Bounds; 

...然而,似乎是在這個新的控制沒有相關的領域。任何人都可以提供幫助,還是需要對各種縮放級別進行逆向工程,然後根據中心點,縮放級別和像素高度/寬度進行工作?

回答

8

您可以使用視轉換的方法,如:

GeoCoordinate topLeft = yourMapInstance.ConvertViewportPointToGeoCoordinate(new Point(0, 0)); 
GeoCoordinate bottomRight = 
yourMapInstance.ConvertViewportPointToGeoCoordinate(new Point(mapSize.Width, mapSize.Height)); 

return LocationRectangle.CreateBoundingRectangle(new[] { topLeft, bottomRight }); 

也許你可以直接使用地圖控件實例的renderSize,但可以肯定有關運行正確的尺寸,我建議聽「SizeChanged」事件。並檢查mapsize值不是0或Infiniteis可能也是一個好主意。

+0

謝謝 - 這是我需要的。值得指出的是,在您的示例中,如果地圖處於3D模式,則topLeft可能會返回爲NULL - 根據API文檔,如果指定的視口點位於「地平線上」,則情況會如此。所以你應該在創建LocationRectangle之前測試null。 –

+2

如果你的地圖自動調整到頁面大小,值得注意的是你應該使用ActualHeight和ActualWidth,否則他們只會是NaN –

0

爲了清楚起見,如果您已經爲WP7創建了大型應用程序,您仍然可以使用WP8中的原始Bing地圖(儘管它們已被棄用)。
你可以在這裏找到與Bing地圖圖書館爲WP8:

C:\ Program Files文件(x86)的\微軟的SDK \的Windows Phone \ 8.0 \圖書館

這是一個可行的爲你解決,還是你想切換到新的地圖呢?

+0

謝謝你指出這一點。我想使用新的Map控件,因爲向前推進,使用不推薦使用的控件可能不明智。 –

相關問題