我正在爲我們學校開發地圖應用程序。我們學校爲我提供了自己的地圖圖像和座標信息。所以我想使用我的地圖圖像作爲地圖的來源,並根據用戶的位置在地圖圖像中顯示一個點。任何人都可以給我一些建議嗎?如何在Windows Phone中自定義地圖控制器以使用我的地圖圖像
在此先感謝。
我正在爲我們學校開發地圖應用程序。我們學校爲我提供了自己的地圖圖像和座標信息。所以我想使用我的地圖圖像作爲地圖的來源,並根據用戶的位置在地圖圖像中顯示一個點。任何人都可以給我一些建議嗎?如何在Windows Phone中自定義地圖控制器以使用我的地圖圖像
在此先感謝。
有2種方式:
有可能改變Map Control的地圖圖塊(例如,從兵說諾基亞或谷歌)的來源。但是,爲了實現這一點,地圖圖塊源實現quadkeys之類的機制很重要(例如,請參閱this)。因此,要回答你的問題,如果你想在學校的地圖上使用必應地圖控件,這樣你就可以利用控件的定位功能,這就需要你有一個正確設計的地圖圖塊服務器來實現這一點。而且,如果我沒有弄錯,那麼在更改Bing Map控件時可能會有一些法律問題。
但是,考慮到您建議使用地圖圖像,然後進行定位,那麼我建議您可以像使用地理座標校準地圖上的像素XY座標系一樣簡單由地理研究員提供。然後,在你的代碼中,你可以在這兩個系統之間做一個簡單的映射,然後在圖像上繪製一些東西。對於這部分,您可以使用writeablebitmap
或者僅使用可以使用silverlight覆蓋UI控件的事實。因此,後者的畫布上有您學校地圖的圖像,然後在該畫布的頂部,您可以使用代表設備的<image>
並將其左上角座標wrt更改爲畫布。因此,總之,由於地理看守者爲您的代碼提供了geo xy座標,所以存在對像素XY(您已預先計算)的映射函數,並使用該XY來定位覆蓋圖<image>
或繪製一些圖像在您以前繪製學校地圖圖像的writeablebitmap
上的「別針」。當你想要縮放時,事情會變得複雜,但這個解決方案很容易擴展。
這是否有助於清除一些東西?
回答在下面的評論第二個問題:
是,你可以放大和縮小的畫布,但你必須自己動手編程。控件本身,畫布不具備這種能力。因此,您必須識別縮放操作的觸發器(例如,單擊(+)或( - )按鈕或捏和伸展手勢),並通過在畫布上重新繪製該區域的一部分現在這個區域延伸到整個畫布上。即,縮放。例如,對於縮放情況:您必須確定與縮放因子相對應的幾何區域,並與畫布對象的尺寸成比例。然後,您必須將該部分向上縮放,以便代表它們之間牆壁和空間的邊緣和空白空間成比例增長。此外,您必須確定您在畫布上修復的區域的中心點,以便所有東西都可以遠離它。因此,您將獲得適當的縮放效果。此時,您將不得不重新調整地理座標到像素XY的映射函數,以便可以在新渲染的曲面上精確且準確地繪製「引腳」或感興趣對象。
據我所知,這可能看起來相當密集,但是,一旦你感謝你自己所需的機制,這很簡單。
另一個更容易的選擇可能是在Web瀏覽器控件中使用SVG(可縮放矢量圖形)。請注意,您仍然需要pixel-xy系統的地理座標。但是,使用這種方法,您可以使用SVG(具有用於縮放和放大操作的轉換功能)和Web瀏覽器(可讓您呈現SVG並執行放大的手勢處理)的組合來免費進行縮放地圖。爲此,我相信工作成本將重新創建位圖到SVG的學校地圖。有一些工具,如Inkscape,您可以使用它來加載地圖的圖像,然後在其上繪製輪廓線。然後,您可以將該大綱文檔保存爲SVG。事實上,在處理Canvas方法之前,我會向您的問題推薦此方法,因爲我認爲這將是您最需要的最簡單路徑。
非常感謝你,因爲我需要一個離線解決方案,我會嘗試你提到的第二種方法。我曾考慮過使用標籤來顯示地圖,但沒有您的建議,我不知道如何設置圖像的焦點。我想知道如果我可以放大和縮小畫布嗎? –
ackratos
是的,你可以。我更新了上面的答案以回答這個問題。 –
謝謝,你真是一個善良的人!我已經實現了縮放代碼並將任意點設置爲畫布的中心。謝謝。例如,當我通過觸摸移動圖像時,我觸摸圖像並保持並向上移動。程序標題將被我的地圖圖像的一部分覆蓋,該圖像從畫布移出。你知道如何限制圖像:如果某些部分不在畫布上,這些部分就像標題面板所覆蓋的那樣變得透明瞭。 – ackratos