You are on page 1of 38

MC LC I. GII THIU ....................................................................................................................... 1 1. Mi trng WP ................................................................................................................ 4 II. LP TRNH TRN WINDOWS PHONE 7 ................................................................... 5 1.

LM QUEN VI CU TRC CA 1 CHNG TRNH WINDOWS PHONE ....... 5 2. XY DNG CHNG TRNH HELLO WORLD U TIN ................................ 12 TO MI MT PROJECT .............................................................................................. 12 XY DNG NG DNG............................................................................................... 14 III. XY DNG NG DNG BN N GIN S DNG BING MAP API ....... 17 1. PHN TCH LOGIC ..................................................................................................... 17 2. THIT K GIAO DIN ................................................................................................ 18 3. NG K API KEY S DNG BN ........................................................... 24 4. XY DNG HM LY V TR HIN TI (GET LOCATION) .............................. 27 5. LY A CH KHI BIT LOCATION (GET ADDRESS) .................................. 29 6. LY LOCATION KHI BIT A CH (GET LOCATION)................................ 33 7. VIEWMODE ................................................................................................................. 36 TNG KT ............................................................................................................................. 37

Gio vin hng dn : Phm Hng Phong

I.

GII THIU

Chng ta s tm hiu c v tiu chun phn cng ti thiu dnh cho h iu hnh WP, t chng ta s c th nm c nhng gii hn v ni dung v hiu ng khi lp trnh trong WP. Nn tng WP nh mt my tnh Ngy nay thit b cng ngh thng tin thay i vi tc chng mt v cc thit b cm tay nh cellphone cng khng nm ngoi l. Hin nay cc cell phone khng nhng pht trin v phn cng m phn mm cng thay i vi tc chng mt. WP c coi nh mt chic vi tnh thc th v nhng kh nng khng h thua km ca n. Mt thit b WP c con chip x l ti thiu kh mnh, c kh nng lu tr cc b, h tr ha 3D v b nh kh ln vi n v ln ti hng Gigabyte. WP c vit li t nhn h iu hnh mi v hon ton khc vi h iu hnh windows mobile trc. WP vit da trn nhn ch yu t mi trng Silverlight v XNA. C th ni h iu hnh WP l n lc ln ca Microsoft trong vic lm nn mt h iu hnh thc th dnh cho cellphone hot ng da trn ch yu vo mn hnh cm ng. Bn v nn tng phn cng ca WP Trc khi lp trnh vi WP chng ta s phi c ci nhn s lc v phn cng ca n. Tt c thit b chy h iu hnh WP iu phi tha mn cu hnh ti thiu c xut t Microsoft. V vy khi bn cm trn tay mt chic WP bn chc chn rng s tn hng c cc hiu ng cng nh tc x l mc chp nhn c ca WP.

Th nhng bn c th d dng thy trn th trng c cc nh sn xut in thoi cho ra cc sn phm mnh hn xut ca Microsoft rt nhiu nhm lm tha mn cc tn v game, video cn cc hiu ng nh cao nh b vi x l rt mnh, mn hnh cm ng ln hn, b nh nhiu hn. B vi x l

Gio vin hng dn : Phm Hng Phong

The Central Processing Unit (CPU) l ni mi cng vic iu c gii quyt ti y. H iu hnh WP cn b vi x l vo khong 1GHz. So snh vi CPU tht ra khng ch khc n thun v tc m cn khc rt nhiu v cch thc hot ng ca chng. th nht: CPU trn PC c th c a nhn h tr chy a nhim, cn trn CPU WP thng ch c 1 nhn v a nhim trn WP thng ch h tr mc ti thiu nhm m bo thch hp vi b vi x l i km. Th hai: CPU trn PC c tc x l vt tri vi cellphone. nh i vi iu ta s phi tr gi v nhit v lng pin v phi cn mt b nh RAM ln. V vy khi lp trnh vi WP ta s phi xem xt ti gii hn ca n c th c nhng hng pht trin tt nht.

H iu hnh WP h iu hnh WP cn c gi l Windows CE (Compact Edition), c thit k ring cho thit b di ng, ti u cho pin v tc chip ca thit b. H iu hnh WP da trn nhn ca silverlight, mt nhn ti u cho cc hin th animations mt cch mt m nht vi cc hnh nh vector khng b b mu khi nm trn cc thit b c kch thc mn hnh khc nhau. V vy cc chng trnh chy c trn WP hon ton c th chy c trn PC.

ha WP c thit k hin th tt cc hnh nh c cht lng cao vi mt pixel ln. Trn WP chng ta c th thy cc dng ch c hin th vi mn cao. Th nhng hin th cng nhiu pixel nh ta s phi hao tn b nh ram cng nh hao tn pin hn. WP bit s lm cho mn hnh hin th nh thch hp nht vi mn hnh v pin ca cellphone. V vy bn c th m nhng file nh ln m khng lo v cht lng hin th cng nh s nh hng ti thi lng pin.

a chm

Gio vin hng dn : Phm Hng Phong

Cc thit b di ng i c c mn hinh cm ng th thng l cm ng in tr da vo lc tc ng ln mn hnh. Cn cc th h cellphone chy WP th thng dng mn hnh cm ng in dung, n hot ng da trn cc electron m trn u ngn tay ca ngi s dng. V vy mn hnh in dung d dng h tr a chm trn mn hnh t em li cho ngi dng tri nghim hon ton mi trn thit b di ng.

GPS ( Global Positioning System) Hu ht cc thit b chy WP u c h thng GPS nhm gip cho ngi dng c th xc nh v tr v tm ng thng qua phn mm h tr nh GoogleMaps hoc BingMaps....C th ni tnh nng ny dng nh khng th thiu trn cc thit b di ng thng minh hin nay.

B gia tc(Accelerometer) b gia tc l mt thit b phn cng gip h iu hnh nhn bit rung,lc hay hng di chuyn ca thit b. T thit b ny xut hin rt nhiu chc nng c yu thch nh lc i bi nhc, chi game ua xe trn iphone...

Camera hu ht cc thit b cellphone hin nay u c camera v WP khng nm ngoi l. Cc camera trn WP c t nht 5Mpx vi nhng bc hnh ln ti hn 5 triu im nh. Khi vit chng trnh thao tc vi camera chng ta c vi im cn quan tm: Chng ta khng th can thip vo camera khi ang quay nu khng c h tr t pha phn cng camera. Tc y bn khng th chn hnh ln camera ang hot ng c. Th 2: chng ta khng th chp mt bc nh m khng c s ng t pha ngi dng.

B Nh V Lu tr:
3

Gio vin hng dn : Phm Hng Phong

B nh l thnh phn rt quan trng trong bt k cellphone no. B nh c 2 loi b nh mass storage dng lu tr chng trnh v b nh Ram dng gip cc phn mm lu gi trng thi v truy xut nhanh. Trn WP th chng ta c t nht 256MB b nh RAM v t nht 8GB d liu. Vi b nh my nh trn nn WP s ti u li tt c phn mm sao cho phn mm chy mt m nht c th trn phn cng b gii hn nh vy.

Cc kt ni mng c h tr Kt ni internet l thnh phn khng th thiu ca cc in thoi thng minh. H iu hnh WP h tr cho bn cc kt ni internet thng dng nht: Wifi: tt c cc thit b chy WP u h tr kt ni khng dy. N cho bn mt kt ni tc cao nhng tt nht bn nn lm vic gn vi im pht sng wifi c mt kt ni tt nht. 3G: c tc truy cp gn nh Wifi v c ph sng tt hn Wifi nn khc phc c nhc im ca wifi. Bn c th i bt c u min c sng di dng bn s c th truy cp Internet thng qua 3G. GPRS: nu nhng ni qu ho lnh khng c Wifi hoc 3G th bn c th si n GPRS, th nhng tc ca n khng th no snh bng 2 kt ni trn. Ngoi ra WP cn h tr cho chng ta kt ni bluetooth dnh cho vic nghe nhc qua tai nghe bluetooth hoc gi nhng lng file nh cho nhau. Cc thch thc ca WP WP c thit k rt mnh m cho cc thit b di ng th nhng n vn b rng buc bi cc vn v thi lng pin, tc x l v b nh Ram gii hn. V vy ngi lp trnh vin phi chun b tt kin thc v gii hn ca thit b.

1. Mi trng WP WP c Microsoft h tr rt nhiu vi cc phn mm km theo c th giao tip tng tc trn cc h thng khc nhau.
4

Gio vin hng dn : Phm Hng Phong

Zune Software: Gip WP giao tip vi PC nhm qun l multimedia, trao i d liu vi nhau. Khi bn lp trnh trn Visual Studio bn c th y ng dng ca bn ln thit b thng qua Zune c tch hp trong Visual Studio. Windows Live v Xbox Live: Nu bn s hu WP, bn hon ton c th ng k ti khon Live v tham gia cc tr chi trn Xbox Live ca Microsoft. Bn c th lm vic vi cc ng dng vn phng vi office online c cung cp bi Microsoft thng qua ti khon Live. Bing Maps: Bing Maps cung cp cho bn bit v tr hin ti cng nh bn hu ht cc nc trn th gii. Bn c th s dng c hu ht cc dch v ca Bing Maps nh nh v, tm kim v tr, dn ng, bn 3D... II. LP TRNH TRN WINDOWS PHONE 7

1. LM QUEN VI CU TRC CA 1 CHNG TRNH WINDOWS PHONE


M code WP c vit trn nn .NET nn n rt quen thuc vi lp trnh vin .NET. Chng ta c th download Visual Studio Express For WP phin bn min ph c th lp trnh cho thit b WP. Ngoi ra Microsoft cn cung cp b cng c Blend min ph lp trnh vin c th d dng thit k giao din trn WP. Tm li ban u ta cn phi ci cc b cng c sau c th lp trnh trn WP(yu cu ti thiu) : Visual studio 2010 express for window phone (http://www.microsoft.com/express/Phone/ ) Windows Phone Developer Tools (http://www.microsoft.com/downloads/en/details.aspx?FamilyID=49b9d0c5-65974313-912a-f0cca9c7d277 ) - Silverlight For WP Toolkit (http://silverlight.codeplex.com/ )
5

Gio vin hng dn : Phm Hng Phong

By gi chng ta c th bt u ng dng u tin vi WP. Ban u trong template ca visual studio 2010 by gi c template Silverlight For Windows Phone ca ng dng WP. Khi khi to project xong, ta s thy xut hin hnh nh WP nh sau:

Hnh 1: Khi to project Trn mn hnh design trn ta c th ko cc control t Toolbox bar c thit k giao din mt cch d dng. iu quan trng ta cn lu l khi bn lp trnh cho WP bn c th chy chng trnh ca bn trn WP emulator hoc trn thit b tht thng qua dy cm USB. cu hnh khi chy ng dng bn c th chn nh hnh sau:

Hnh 2: Chn ch chy phn mm.


6

Gio vin hng dn : Phm Hng Phong

c th hiu phn no cu trc phn mm ta s nhin vo cy th mc ca phn mm:

Hnh 3: Cu trc project WP Ta s tm hiu cu trc cng nh nhim v ca cc thnh phn trong project nh sau: File App.xaml, App.xaml.cs v MainPage.xaml, MainPage.xaml.cs: Nu l lp trnh vin .NET ta hon ton c th bit ngay rng cc file c ui cs l nhng file code-behind cn nhng file c ui xaml l nhng file Extensible Application Markup Language (XAML) tng tc vi cc file cs tng ng. M file App.xaml.cs ta s cu trc quen thuc nh sau: namespace SilverlightHelloPhone { public partial class App : Application
7

Gio vin hng dn : Phm Hng Phong

{ public App() { InitializeComponent(); } } } y ta cn ch cc class c t l partial v Microsoft chun b cho n kh nng ku thm mt file cs mi c cc thnh vin ca class App ny. Cu trc file App.xaml nh sau: <Application x:Class="PhoneApp1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"> .... </Application> File App.xaml thng c s dng lu tr cc resource ca ton b ng dng. Resource ca ng dng thng bao gm gi tr ca cc bin mu, gi tr cc brush hoc cc style v animation. ng c php ca ngn ng XAML trong Silverlight bn phi c element root v sau phi khai bo 4 XML Namespace. Property xmlns l namespace tiu chun rt ph bin trong Silverlight v property xmlns u tin gip cho compiler nh ngha c class khi thc thi. Propery XML th 2 th tham chiu ti nhng element v c tnh khc c trong nhn Silverlight. Trong project WP ta c th gp thng xuyn 2 property tng t nhau l x:name v name. Thc ra x:name c tham chiu t:
8

Gio vin hng dn : Phm Hng Phong

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml". Cn name property tham chiu t: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Thc ra khng h c s khc bit nhau 2 property ny cho lm. Nhng khi bn dng vit template silverlight cho visual studio th bn phi bt buc s dng x:name trnh cc li v compile cng nh li hin th. (1) Khi chng trnh bt u chy, t App Class s to ra object PhoneApplicationFrame. PhoneApplicationFrame s l nh mt web browser v s gi class MainPage. MainPage.xaml v MainPage.xaml.cs l thnh phn bt buc trong Silverlight. y l trang ch ca chng trnh tc khi chng trnh c chy thnh cng s n trang ny. Xt qua MainPage.xaml.cs class ta s thy cu trc ca n rt n gin: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace PhoneApp1 { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); }
9

Gio vin hng dn : Phm Hng Phong

} }

Vic kt tha class PhoneApplicationPage mang li cho class MainPage k tha u cc tnh nng ca mt trang ng dng WP. Phn giao din s do file MainPage.xaml quyt nh. M file MainPage.xaml ta s thy cu trc nh sau: <phone:PhoneApplicationPage x:Class="PhoneApp1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" shell:SystemTray.IsVisible="True"> <!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel contains the name of the application and page title--> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - place additional content here-->
10

Gio vin hng dn : Phm Hng Phong

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid> </Grid> </phone:PhoneApplicationPage> Thot nhn qua ta s nhn thy 4 khai bo xml u ging vi file App.xaml. Cn li c mt s keyworld ta cn nm l namespace d l vit tt cho ch design v mc l vit tt ca markup compatibility(2) v 2 t kha trn l th mnh ca ngn ng XAML. Xt v c bn XAML cng l ngn ng ging nh HTML th nhng XAML li c Microsoft trang b cho nhng kh nng ha tuyt vi vi c php cht ch hn. Ta c th nhn thy on m XAML trn xt cc property FontSize, FontFamily v Fontground thng qua mt StaticResource. Ta s nghin cu k hn v StaticResource trong chng sau nhng qua y bn c th no hnh dung c kh nng qun l resource rt tt ca Silverlight For WP. Phn thit k trang thng qua cc control Grid, StackPanel... cc control ny s c tm hiu k cng hn cc chng sau. Phn cui cng trong chng ny, chng ta s phi nm r rng khi bn build project WP th file thc thi cha tt c m lnh v resource ca chng trnh s c nm trong file c ui l XAP v file XAP c ti u ha lm sao c th chy nhanh nht khi chy. Thc ra file XAP ch tng t nh file ZIP m thi. Ta hon ton c th gii nn n nh mt file ZIP bnh thng. Ta c th tm thy file XAP trong th mc Debug/Bin. Khi bn y ng dng ln thit b tht, ta ch cn deploy file XAP l .

11

Gio vin hng dn : Phm Hng Phong

2. XY DNG CHNG TRNH HELLO WORLD U TIN

TO MI MT PROJECT M chng trnh ln, chn New Project. Chng ta cng c th chn New Project t File menu hoc s dng phm tt : Ctrl+Shift+N. Mt ca s la chn s hin ra nh hnh di y

T Installed Templates, chn Silverlight for Windows Phone v sau chn Windows
12

Gio vin hng dn : Phm Hng Phong

Phone Application. G tn ca ng dng l : HelloWorldApp. n vo Brower chn khu vc bn mun lu project, sau n OK. Mt ca s s hin th ra nh hnh di. Chn phin bn Windows Phone bn mun xy dng sau n OK.

Chng trnh s to ra mt project nh hnh di. Bn tri l khung thit k ca chng trnh, bn phi l code xaml

13

Gio vin hng dn : Phm Hng Phong

XY DNG NG DNG Chng ta r chut vo Toolbox. Ko v th Button control ra khu vc thit k ca ng dng

Bn c th di chuyn Button n mt v tr bt k trong khung thit k.

By gi chng ta s th thay i Text ca Button. T khung Properties Window chng ta chn thuc tnh Text v i n thnh "Click Me!". Sau n Enter xc nhn thay i.
14

Gio vin hng dn : Phm Hng Phong

Tng t, chng ta thm mt Textblock control bn di Button, Xa ni dung text ca Textblock i. Ta c kt qu nh sao

By gi, click p ln Button control. N s m ra file MainPage.xaml.cs vi ni dung nh hnh di. Button click event handler (s kin click button ) s c t ng to ra cho bn.

Chng ta thm vo mt dng code nh sau


15

Gio vin hng dn : Phm Hng Phong

private void button1_Click(object sender, RoutedEventArgs e) { textBlock1.Text = "Hello World!!!"; //line to be added } Bn cng c th thay i tn ca ng dng, bng cch chn Title v thay i thuc tnh Text thnh HELLO WORLD APP ging nh cch bn lm vi Textblock.

Xong !, by gi chng ta n vo nt start ( trn hnh) hoc n F5 chy . ng dng c to. Windows Phone emulator s c bt ln v ch 1 t ng dng ci t. Sau ng dng s t ng m ra. Th click vo button "Click Me!" bn s thy hin ra dng text bn di

16

Gio vin hng dn : Phm Hng Phong

III.

XY DNG NG DNG BN N GIN S DNG BING MAP API

phn trn, sau khi thc hnh xy dng ng dng HELLO WORLD by gi chng ta bt u quen vi cch to ra 1 chng trnh trn Windows Phone. phn ny ti s hng dn cc bn to ra mt ng dng bn c bn.

1. PHN TCH LOGIC


MT NG DNG BN C BN S CN C NHNG G ?
L : Mt nt ly v tr hin ti ( current location ) Mt thanh tm kim ngi dng c th tm kim 1 a im no Mt nt chuyn ch xem ca bn ( v d : ti mun xem theo kiu v tinh th lm th no ? ) Mt ci bn hin th d liu ( ci ny th ng nhin phi c ) Phn logic xong, by gi chng ta s bt u xy dng chng trnh.

17

Gio vin hng dn : Phm Hng Phong

2. THIT K GIAO DIN


To mi 1 project nh hnh sau

18

Gio vin hng dn : Phm Hng Phong

Thm 2 th vin ny vo s dng

19

Gio vin hng dn : Phm Hng Phong

By gi chng ta s ko th Map Control vo, Map control s gip chng ta hin th d liu trn bn . Cc bn ch Map Control toolbox v ko vo mn hnh, sau chnh kch thc cho n.

20

Gio vin hng dn : Phm Hng Phong

Th no, tm mi khng ra ng khng ?. Ci ny nu tm khng ra bn c th lm nh sau.

21

Gio vin hng dn : Phm Hng Phong

Sau khi to ra mt ci map hin th nh trn chng ta s thm cc button, textbox nh sau

22

Gio vin hng dn : Phm Hng Phong

Chng ta n F5 th chy chng trnh xem no

23

Gio vin hng dn : Phm Hng Phong

Theo nh thng bo th chng ta s khng s dng c bn nu cha ng k API Key.

3. NG K API KEY S DNG BN


Truy cp vo trang web sau ng k 1 API Key : http://www.bingmapsportal.com/

24

Gio vin hng dn : Phm Hng Phong

Chng ta tin hnh to 1 API Key mi nh sau

Kt qu ca chng ta y

25

Gio vin hng dn : Phm Hng Phong

y l on key chng ta cn Ah04k4eCmb7IC1gG50_ToWNRSBrBcx2CBCumfzID0bI1bRvUKEDt2y6r1Htpo6kG By gi quay li vi chng trnh, chng ta sa on xaml ny

Thnh nh di, vi API key ca chng ta


<Maps:Map CredentialsProvider="Ah04k4eCmb7IC1gG50_ToWNRSBrBcx2CBCumfzID0bI1bRvUKEDt2y6r1Htpo6kG" HorizontalAlignment="Left" Height="397" Margin="10,142,0,0" VerticalAlignment="Top" Width="446"/>

By gi th chy li chng trnh xem nh

26

Gio vin hng dn : Phm Hng Phong

4. XY DNG HM LY V TR HIN TI (GET LOCATION)


Chng ta click p vo nt get location chuyn qua code cho s kin click vo button ny

Chng ta thm vo s kin GetGPS(); y l ni dung ca hm GetGPS();


Pushpin locationPushpin = new Pushpin(); GeoCoordinateWatcher watcher; watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);// Chn chnh xc khi ly v tr watcher.MovementThreshold = 20; watcher.StatusChanged += (s, e) => { switch (e.Status) { case GeoPositionStatus.Disabled: MessageBox.Show("Bn cha bt GPS ca thit b"); break; case GeoPositionStatus.NoData: MessageBox.Show(" GPS bt nhng khng th ly d liu v tr ca bn"); break; } }; watcher.PositionChanged += (s, e) => { if (e.Position.Location.IsUnknown) { MessageBox.Show("Vui lng i trong khi h thng ly v tr ca bn..."); return; } this.mapdemo.Center = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude); if (this.mapdemo.Children.Count != 0) { var pushpin = mapdemo.Children.FirstOrDefault(p => (p.GetType() == typeof(Pushpin) && ((Pushpin)p).Tag == "locationPushpin")); if (pushpin != null)

27

Gio vin hng dn : Phm Hng Phong


{ this.mapdemo.Children.Remove(pushpin); } } locationPushpin.Tag = "locationPushpin"; locationPushpin.Location = watcher.Position.Location; this.mapdemo.Children.Add(locationPushpin); this.mapdemo.SetView(locationPushpin.Location, 18.0); }; watcher.Start();

V y l kt qu khi F5 chy

28

Gio vin hng dn : Phm Hng Phong

5. LY A CH KHI BIT LOCATION (GET ADDRESS)


TI SAO CHNG TA LI PHI LM VIC NY ? Tr li : Chng ta ly c v tr mnh ang ng ri, tuy nhin nu mun cho p hn khi hin th kt qu th chng ta nn lm vic ny ngi dng c th bit c a ch ni mnh ang ng. Chng ta s xy dng hm FindByLocation(Ta ca bn) tr v kt qu l a ch Chng ta s cn n 1 s hm c th ly c a ch, cc hm ny li l 1 th vin trc tuyn nn chng ta s thm chng vo project nh sau :

29

Gio vin hng dn : Phm Hng Phong

Ca s ny s hin ra, cc bn thm dng sau vo thanh a ch v nhn Go: http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice.svc

30

Gio vin hng dn : Phm Hng Phong

y namespace ca mnh l BingMapGeoCodeService v mnh s s dng n trong project ny : using BINGMapsDemo.BingMapGeoCodeService; By gi chng ta s vit hm FindByLocation() Trc khi get d liu t trn mng v, chng ta cn phi kim tra xem c mng khng
private bool checkNetwork() { if (NetworkInterface.NetworkInterfaceType != NetworkInterfaceType.None) return true;//Nu c mng return false;//Nu khng c mng }

y l hm FindByLocation
private void FindByLocation(double _long, double _lat) { if (checkNetwork()) { // ng k chng ch vi API Key c th s dng cc hm ny ReverseGeocodeRequest reverseGeocodeRequest = new ReverseGeocodeRequest(); reverseGeocodeRequest.Credentials = new Credentials(); reverseGeocodeRequest.Credentials.ApplicationId = "ApJsz76A5DIw8fg7oU2F1nI2wO2p7xssazIh1SdqA_LcZskorBXeV9YEYdcG3GqI";

31

Gio vin hng dn : Phm Hng Phong


// Ly tn v tr t ta ca chng ta Location point = new Location(); point.Latitude = _lat; point.Longitude = _long; reverseGeocodeRequest.Location = point; GeocodeServiceClient geocodeServiceClient = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService"); geocodeServiceClient.ReverseGeocodeCompleted += (s, e) => { if (e.Result.Results.Count > 0) { Address = e.Result.Results[0].DisplayName;//e.Result chnh l kt qu tr v t ta ca chng ta, ta s gn 1 bin string y ly ni dung tr v. } }; geocodeServiceClient.ReverseGeocodeAsync(reverseGeocodeRequest); } else { MessageBox.Show("Bn cha kt ni mng, vui lng kim tra li!"); } }

trong hm getgps() chng ta thm vo on code di y, bin address l 1 bin ton cc do lp trnh vin nh ngha, ng thi cng gi hm FindByLocation

locationPushpin.Content = address;

32

Gio vin hng dn : Phm Hng Phong

Th chy chng trnh no !

Rt tuyt phi khng no.

6. LY LOCATION KHI BIT A CH (GET LOCATION)


phn trn chng ta ly c a ch khi bit v tr, t cu hi ngc li l nu bit a chng ta c ly c v tr khng, cu tr li l c. By gi ti s hng dn cc bn lm th no, chng ta s p dng xy dng nt search cho bn .
33

Gio vin hng dn : Phm Hng Phong

By gi chng ta s to 1 hm FindByAddress, tc dng l s tr v v tr ca chng ta vi 1 a ch c Tng t nh hm FindByLocation ta c ni dung hm FindByAddress nh sau


private void FindByAddress(string Address) { if (checkNetwork()) { GeocodeRequest geocodeRequest = new GeocodeRequest(); geocodeRequest.Credentials = new Credentials(); geocodeRequest.Credentials.ApplicationId = "ApJsz76A5DIw8fg7oU2F1nI2wO2p7xssazIh1SdqA_LcZskorBXeV9YEYdcG3GqI"; if (Address == null || Address == "") geocodeRequest.Query = "47.7022,-122.1659";//"H ni, Vietnam"; else geocodeRequest.Query = Address.Trim(); // this.mapdemo.Children.Clear(); while (this.mapdemo.Children.Count != 1) { var pushpin = mapdemo.Children.FirstOrDefault( p => (p.GetType() == typeof(Pushpin) && ((Pushpin)p).Tag == "FindByAddress")); if (pushpin != null) { this.mapdemo.Children.Remove(pushpin); } } // Set the options to only return high confidence results FilterBase[] filters = new FilterBase[1]; filters[0] = new ConfidenceFilter() { MinimumConfidence = Confidence.High }; GeocodeOptions geocodeOptions = new GeocodeOptions(); geocodeOptions.Filters = new ObservableCollection<FilterBase>(filters); geocodeRequest.Options = geocodeOptions; GeocodeServiceClient geocodeService = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService"); geocodeService.GeocodeCompleted += (s, e) => { List<Pushpin> pushpins = new List<Pushpin>(); if (e.Result.Results.Count > 0)//S lng kt qu tr v { foreach (var _result in e.Result.Results) { //Pin cc kt qu ln bn Pushpin pushpin = new Pushpin(); pushpin.Location = new GeoCoordinate( _result.Locations[0].Latitude, _result.Locations[0].Longitude); pushpins.Add(pushpin); this.mapdemo.Children.Add(pushpin);

34

Gio vin hng dn : Phm Hng Phong


} this.mapdemo.SetView( new GeoCoordinate(pushpins[0].Location.Latitude, pushpins[0].Location.Longitude), 15.0); } else { MessageBox.Show( "Khng tm thy kt qu no"); } pushpins.Clear(); }; geocodeService.GeocodeAsync(geocodeRequest); } else { MessageBox.Show("Bn cha kt ni mng, vui lng kim tra li !"); } }

Ta s gi n trong s kin click ca nt search

Th tm 1 a im xem nh

35

Gio vin hng dn : Phm Hng Phong

7. VIEWMODE
Viewmode th kh n gin, chng ta thm vo s kin click ca button view mode ni dung sau
if (mapdemo.Mode is RoadMode) { mapdemo.Mode = new AerialMode(true); } else { mapdemo.Mode = new RoadMode(); }

36

Gio vin hng dn : Phm Hng Phong

TNG KT
Xin lu vi cc bn c bi hng dn ny l c mt s vn v x l hiu sut khi ly kt qu cng nh hin th kt qu mnh khng nu ra y, hi vng khi cc bn lp trnh gp phi n s t mnh tm ra c li gii p. Mi thc mc c th gi v a ch EMail : anh.pc.hut@gmail.com

37

You might also like