當麻許

程式.生活.D小調 - 兼任的偽善者,職業的詐欺師,part-time的故事家,業餘的code generator,不合格的愛情騙子,高譚市的小丑,三流的魔術師,不服輸的夢想家,多重人格的藝術師,不專業的網路觀察家,Facebook超自然現象研究社社長,Silverlight衝浪手,揮霍的客家人,魔集客的吹笛手,長不大的幼稚鬼,瞎搞的光劍鑄劍師,堅持對我來說 就是以剛克剛
文章數 - 177, 回應數 - 411, 引用數 - 0







Get Microsoft Silverlight



MSN :


Email :

文章標籤

全部標籤

每月文章

[Silverlight] Phone 7中BingMap Control 使用中文台灣地圖(僅供研究教學用)

 

 

之前,有一隻APP出現在其他平台,弄得軒然大波,叫做我愛波波,那時候我就看到有關地圖的部分,其實透過Silverlight 開發Windows Phone 7 中的地圖程式,

非常的簡單,因為在Windows Phone 7 裡面,就已經內建有了BingMap Control ,

所以可以很簡單的做出具有地圖的軟體

clip_image002

只需要將Map Control 拖曳進去就可以很簡單的完成地圖的部分。執行結果如下:

clip_image003

如果中間出現Invalid Credentials sign up for developer account.

可以到 http://www.bingmapsportal.com/ 申請一組Key 那字樣就會消失。

等等,這時候出現一個問題,就是為什麼地圖會是英文的,其實,那是因為目前Bing Map 尚未開放中文的地圖,其實有點可惜,如果能出現中文那該多好,因為在Silverlight 中Map Control 效果做的很棒,不過沒有關係,因為可以透過繼承

Microsoft.Phone.Controls.Maps.TileSource

去置換其顯示圖資來做到,所以我們把那Control 的顯示圖換成Google Map 的,請注意,請注意其使用圖資的條款,如果是商業用途請慎用,首先建立一個GoogleTileSource.cs 檔案其內容如下

 

 
    public class GoogleMapsRoadTileSource : GoogleMapsTileSourceBase
    {
        public GoogleMapsRoadTileSource()
            : base("http://mt{0}.google.com/vt/lyrs=m@128&hl=en&x={1}&y={2}&z={3}&s=")
        { }
    }

		
    public class GoogleMapsAerialTileSource : GoogleMapsTileSourceBase
    {
        public GoogleMapsAerialTileSource()
            : base("http://khm{0}.google.com/kh/v=62&x={1}&y={2}&z={3}&s=")
        { }
    }

		
    public class GoogleMapsLabelsTileSource : GoogleMapsTileSourceBase
    {
        public GoogleMapsLabelsTileSource()
            : base("http://mt{0}.google.com/vt/lyrs=h@128&hl=en&x={1}&y={2}&z={3}&s=")
        { }
    }

		
    public abstract class GoogleMapsTileSourceBase : Microsoft.Phone.Controls.Maps.TileSource
    {
        protected GoogleMapsTileSourceBase(string uriFormat)
            : base(uriFormat)
        { }

		
        public override System.Uri GetUri(int x, int y, int zoomLevel)
        {
            return new System.Uri(string.Format(UriFormat, new System.Random().Next() % 4, x, y, zoomLevel));
        }
    }

 

 

之後再XAML 使用Map的時候使用方式如下:

 

<Grid x:Name="LayoutRoot" Background="White" Margin="0,0,0,-51">
    <Microsoft_Phone_Controls_Maps:Map x:Name="myMap" d:LayoutOverrides="Width" ScaleVisibility="Visible" CredentialsProvider="AgyuXoy2cMUO2BXbN0agH4EGeFk_vlRESLeypiyD4s2qYljtUstzzaZ0RqK0G_Ye">
        <Microsoft_Phone_Controls_Maps:Map.Mode>
            <mCore:MercatorMode></mCore:MercatorMode>
        </Microsoft_Phone_Controls_Maps:Map.Mode>
        <Microsoft_Phone_Controls_Maps:Map.Children>
            <Microsoft_Phone_Controls_Maps:MapTileLayer>
                <Microsoft_Phone_Controls_Maps:MapTileLayer.TileSources>
                    <local:GoogleMapsRoadTileSource></local:GoogleMapsRoadTileSource>
                </Microsoft_Phone_Controls_Maps:MapTileLayer.TileSources>
            </Microsoft_Phone_Controls_Maps:MapTileLayer>
        </Microsoft_Phone_Controls_Maps:Map.Children>
    </Microsoft_Phone_Controls_Maps:Map>
</Grid>

	

 

 

看一下結果:

clip_image002[7]

這樣地圖就可以正常顯示中文地圖了,這一點,對於台灣的使用者來說,看起來會更方便去使用

 

 

[推一下、讚一 下]

 

 

 


 

推一下 :

 
 

請你暫時把你的勇氣給我 在夢想快消失的時候 讓我的Code 用力的穿過天空 為愛我的人做一秒英雄 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...

Creative Commons License
程式.生活.D小調 by 當麻許 is licensed under a Creative Commons Attribution-ShareAlike License.


Author:  



DotBlogs Tags: Silverlight Windows Phone 7

posted on 2011/7/11 02:06 2 人推薦 我要推薦 | 閱讀數 : 4160 訂閱

Feedback

目前沒有回應.

回應

標題
姓名
電子郵件 (將不會被顯示)
個人網頁
內容 
  登入後使用進階評論  
Please add 4 and 3 and type the answer here:

Powered by: