說明:
一個按鈕button1,對應一個button1_click事件,一個TextBlock,用來顯示內容。點擊該按鈕可以得到當前GPS座標,並根據座標得出當前所在的位置描述。該應用依賴於手機GPS的硬體支援,模擬器提供不了。根據提供的GPS的經緯度調用自訂的Web Service方法來得到位置描述。
介面圖如下:
代碼如下:
private void button1_Click(object sender, RoutedEventArgs e) { //點擊按鍵 找到我的位置(依賴於WP手機的GPS硬體支援) GeoCoordinateWatcher myWatcher = new GeoCoordinateWatcher(); var myPosition = myWatcher.Position; //北京維度 經度 double latitude = 39.92; double longitude = 116.46; if (!myPosition.Location.IsUnknown) { latitude = myPosition.Location.Latitude; longitude = myPosition.Location.Longitude; }//文字框輸出經緯度資訊 textBlock1.Text = "latitude==" + latitude + "\n" + "longitude==" + longitude+"\n"; //Web serive服務初始化(此處用法與WM開發有不同,需注意) ServiceReference1.Service1SoapClient client = new ServiceReference1.Service1SoapClient(); client.myLocationCompleted +=new EventHandler<ServiceReference1.myLocationCompletedEventArgs>(client_myLocationCompleted); //調用Web Service方法 client.myLocationAsync(latitude, longitude); } void client_myLocationCompleted(object sender, ServiceReference1.myLocationCompletedEventArgs e) { //throw new NotImplementedException();if(e.Error!=null){MessageBox.Show("請檢查網路連接,暫時訪問不到服務端."); return;}else{ //接收返回結果 textBlock1.Text += e.Result.ToString();} }
----------------------------------------------
Web Service代碼如下:
using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Linq;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml.Linq;namespace LBSWebService { /// <summary> /// Service1 的摘要說明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // 若要允許使用 ASP.NET AJAX 從指令碼中調用此 Web 服務,請取消對下行的注釋。 // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { [WebMethod] public string myLocation(double x,double y) { //自己隨便寫的一個Web Service服務 string myLocation="北京海澱區西直門北大街1號"; return myLocation; } }}
小技巧:
本地Web Service測試時,沒必要將該Web Service服務發布,只需要將Service1.asmx介面作為啟動頁在瀏覽器瀏覽。VS IDE會有簡易服務啟動該程式,將該地址URL複製即可添加到WP用戶端作為web引用。