`

wp wp8:lbs

    博客分类:
  • wp
wp 
阅读更多
上码:不解释

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using wp8Lbs.Resources;
using System.Device.Location;
using System.IO;

namespace wp8Lbs
{
    public partial class MainPage : PhoneApplicationPage
    {
        //URL接口来自诺基亚地图 
        private const String CITY_INFO_URI = "http://loc.desktop.maps.svc.ovi.com/geocoder/rgc/1.0?lat={0}&long={1}&output=json";

        public MainPage()
        {
            InitializeComponent();

            StartLocationService(GeoPositionAccuracy.Default);
        }

        private void StartLocationService(GeoPositionAccuracy accuracy)
        {
            GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(accuracy);
            watcher.MovementThreshold = 20;

            watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
            watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);

            watcher.Start();
        }

        //INVOKE是同步函数会阻塞住用户的UI线程换句话说如果用INVOKE来做可能造成用户
        //界面卡,而BeginInvoke是异步的函数会在时间片空闲的时间被调用
        void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
        {
            Deployment.Current.Dispatcher.BeginInvoke(() => MyStatusChanged(e));

        }

        void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
        {
            Deployment.Current.Dispatcher.BeginInvoke(() => MyPositionChanged(e));

        }

        void MyPositionChanged(GeoPositionChangedEventArgs<GeoCoordinate> e)
        {

            System.Diagnostics.Debug.WriteLine(e.Position.Location.Latitude.ToString("0.000"));

            System.Diagnostics.Debug.WriteLine(e.Position.Location.Longitude.ToString("0.000"));

            //访问此uri会得到json城市信息数据
            this.getCityInfo(e.Position.Location.Latitude, e.Position.Location.Longitude);
          

        }

        void MyStatusChanged(GeoPositionStatusChangedEventArgs e)
        {
            switch (e.Status)
            {
                case GeoPositionStatus.Disabled:
                    System.Diagnostics.Debug.WriteLine("location is unsupported on this device");
                    break;
                case GeoPositionStatus.Initializing:
                    System.Diagnostics.Debug.WriteLine("initializing location service");
                    break;
                case GeoPositionStatus.NoData:
                    System.Diagnostics.Debug.WriteLine("data unavailable");
                    break;
                case GeoPositionStatus.Ready:
                    System.Diagnostics.Debug.WriteLine("receiving data");
                    break;

            }
        }
       
        /// <summary>
        /// 获取城市信息
        /// </summary>
        /// <param name="latitude">经度</param>
        /// <param name="longitude">纬度</param>
        public void getCityInfo(double latitude, double longitude)
        {
            string urlString = String.Format(CITY_INFO_URI, latitude, longitude);

            Uri uri = new Uri(urlString, UriKind.RelativeOrAbsolute);

            System.Diagnostics.Debug.WriteLine(uri);

            WebClient webClient = new WebClient();

            //显示中文信息

            webClient.Headers["Accept-Language"] = "zh-CN,zh;q=0.8";

            webClient.OpenReadAsync(uri);

            webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_openReadComplete);

        }

        void webClient_openReadComplete(object sender, OpenReadCompletedEventArgs e)
        {

            try
            {

                using (StreamReader reader = new StreamReader(e.Result))
                {
                    String contents = reader.ReadToEnd();

                    System.Diagnostics.Debug.WriteLine(contents);

                }

            }
            catch (Exception)
            {
               
            }

        }


    }
}

分享到:
评论

相关推荐

    wp7_手机开发教程

    - **内置功能**:包括搜索功能、位置服务(LBS)、视频与音频播放、多点触控控制等。 - **游戏支持**:提供先进的游戏开发支持。 #### 二、开发环境搭建 - **必备工具**:安装Windows Phone Developer Tools套件,...

    手机应用开发创意收集

    找优惠是一款基于地理位置服务(LBS)的应用,用户可以随时查找附近的商家优惠信息。 **关键功能:** - **LBS定位:** 根据用户当前位置,搜索周边1公里范围内的优惠信息。 - **优惠券展示:** 展示商家提供的电子...

    JavaScript学习教程,一步到位

    为了帮助学员掌握移动3G开发技术,传智播客.Net班加入了Windows Phone开发课程,采用传智播客独创的WP7Simulator教学平台,学员可以做出一个基于云计算架构的LBS系统。点击查看传智播客独创WP7Simulator教学平台。 ...

    Jquery全栈学习视频

    为了帮助学员掌握移动3G开发技术,传智播客.Net班加入了Windows Phone开发课程,采用传智播客独创的WP7Simulator教学平台,学员可以做出一个基于云计算架构的LBS系统。点击查看传智播客独创WP7Simulator教学平台。 ...

    前端学习会用到的网站

    #### 8. 学习资源 - **网址**:http://xueshengzixue.com/ - **简介**:提供了一系列前端开发学习资源。 - **使用场景**: - 适合初学者系统性地学习前端开发知识。 - 包括理论学习、实践操作等多个方面。 #### 9...

    HTML5+CSS3在触屏网站上的实践.pptx

    - 对于特定浏览器(如QQ浏览器),使用了`wtai://wp/mc;4000086666`的链接格式。 - **获取浏览器型号**: - 通过Java和JavaScript代码获取用户代理字符串,用于识别不同的设备类型和浏览器版本。 - **checkbox & ...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    为了帮助学员掌握移动3G开发技术,传智播客.Net班加入了Windows Phone开发课程,采用传智播客独创的WP7Simulator教学平台,学员可以做出一个基于云计算架构的LBS系统。点击查看传智播客独创WP7Simulator教学平台。 ...

    电子商务020的发展趋势概述.pptx

    智能手机和平板电脑等智能移动终端的普及,使得iOS、Android、WP等平台的移动客户端广泛应用。随着云计算技术的融入,移动电商将实现无处不在的服务,提供更便捷的购物体验。此外,基于位置服务(LBS)的出现,结合...

    Fanuc机器人类型总列.xls

    ,,,,,, 品名,型号,控制器,轴数,臂展距离,,负载重量, ,,,,mm,in,kg,lbs Fanuc,A-520i,RJ2,4,900,35.4,20,44 Fanuc,A-510,RJ,4,740,29.1,20,44 Fanuc,ARC Mate Jr,RG-2,6,1309,51.5,5,11 Fanuc,ARC Mate Sr,RG-2,6,...

Global site tag (gtag.js) - Google Analytics