说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Windows Phone 7 实现简单的GPS定位器

HTML文档下载 WORD文档下载 PDF文档下载
GPS系统变得很受欢迎,许多人的手机都需要它,尤其是游客。但是许多开发商不知道如何开始做GPS系统。这是一个Windows Phone 7中的GPS系统的例子,展示了如何通过手机内置的定位得到你的位置。然后在Bing地图上显示位置(就像谷歌地图)。

 

作者:Ahmedn1

翻译:okbase.net winphone

 

源代码下载

 

介绍

GPS系统变得很受欢迎,许多人的手机都需要它,尤其是游客。但是许多开发商不知道如何开始做GPS系统。

这是一个Windows Phone 7中的GPS系统的例子,展示了如何通过手机内置的定位得到你的位置。

然后在Bing地图上显示位置(就像谷歌地图)。

背景

要使用Bing地图,你需要一个Bing Key用于开发时使用。这是一个您的应用程序的唯一键,用它可以登录到Bing地图。

 

你可以注册Windows Live账号时从Bing Maps Portal(https://www.bingmapsportal.com/)得到key。

拿到key后,你可以将它附加到您的应用程序,并得到你想要的地图。之后,我们可以使用一个重要的服务:Terra服务,它可以以文本形式提供经纬度位置。您可以在项目名称上右键点击,选择“添加服务引用”对于Terra服务,你可以使用这个网址:http://msrmaps.com/TerraService2.asmx,然后你可以根据导入时候所命名的名字引用该命名空间。

官方网站:http://msrmaps.com

 

Terra服务包含了许多重要的用于GPS的方法,例如:

 

  • ConvertLonLatPtToNearestPlace
  • ConvertLonLatPtToUtmPt
  • ConvertPlaceToLonLatPt
  • ConvertUtmPtToLonLatPt
  • CountPlacesInRect
  • GetAreaFromPt
  • GetAreaFromRect
  • GetAreaFromTileId
  • GetLatLonMetrics
  • GetPlaceFacts
  • GetPlaceList
  • GetPlaceListInRect
  • GetTheme
  • GetTile
  • GetTileMetaFromLonLatPt
  • GetTileMetaFromTileId
  •  

     

    我们感兴趣的是:ConvertLonLatPtToNearestPlace,从坐标得到地名。反过来的方法是:

     

    ConvertPlaceToLonLatPt

     

    使用代码

     

    首先,我们设定地图部分的XAML代码

     

     

     

    <my:Map Height="457" Name="mapBing" Width="450" CredentialsProvider="Your Key"/>
    然后要让你的地图工作,你会发现,它会开始工作,甚至在设计视图之前,部署和运行。代码如下:
    Terra.TerraServiceSoapClient client = new Terra.TerraServiceSoapClient();
    这一部分是从下载的服务里创建一个对象:
    public MainPage()        {            InitializeComponent();            client.ConvertLonLatPtToNearestPlaceCompleted += |                new EventHandler<ConvertLonLatPtToNearestPlaceCompletedEventArgs>(                client_ConvertLonLatPtToNearestPlaceCompleted);            mapBing.ZoomBarVisibility = System.Windows.Visibility.Visible;        }
    在构造函数中,我们创建了ConvertLonLatPtToNearestPlaceCompleted事件的事件处理程序
    ,激发时得到最接近我们的坐标位置,然后使地图上的缩放按钮可见。
    void client_ConvertLonLatPtToNearestPlaceCompleted(object sender,     ConvertLonLatPtToNearestPlaceCompletedEventArgs e)        {            txtResult.Text = e.Result;            mapBing.Center = new GeoCoordinate(latitude, longitude);            mapBing.ZoomLevel = 10;        }
    这个是事件处理函数,它显示文本块并将新的坐标置于地图中心,并将放大倍数设为10
    现在让我们看一下按钮点击事件:
    txtResult.Text = "Loading....";GeoCoordinateWatcher myWatcher = new GeoCoordinateWatcher();var myPosition = myWatcher.Position;latitude = 30.01;longitude = 31.14;if (!myPosition.Location.IsUnknown){    latitude = myPosition.Location.Latitude;    longitude = myPosition.Location.Longitude;}client.ConvertLonLatPtToNearestPlaceAsync(new Terra.LonLatPt {     Lat = latitude, Lon = longitude });
    GeoCoordinateWatcher类是手机定位器的内置类,可以通过Position属性得到当前坐标。
    我添加了一些默认的坐标,因为在Windows Phone模拟器中没有定位装置,所以它不会得到正确的坐标。我添加了这些默认值仅用于测试。最后,我们使用Terra服务搜索此位置的名称。
    兴趣点
    在我的工作中,我添加了几个按钮来改变不同地图的模式如:航空,公路,街道,卫星,...... 等等,但我发现,这是不必要的,所以我删除了它。
    历史
    这是第一个版本,我会尽快与更先进的功能,转载时请注明出处。

     

    在Delphi中调用NetscapeNavigator 在Delphi中使用flash控件 在Delphi中使用IP控件 在程序中动态取得Win95/98网络邻居中工作组及计算机名-Delphi资料 在程序中获取网络资源信息-Delphi资料 自制THyperLink组件-Delphi资料 报表制作技巧(三)-Delphi资料 Delphi数据库开发及统计表格设计 Delphi文本和图形的打印方法 Delphi应用程序中中国式报表的制作 Windows环境下实时列表输出的实现方法-Delphi资料 报表制作技巧(二)-Delphi资料 Delphi编制的程序运行中动态制作报表 报表制作技巧(一)-Delphi资料 如何在WINDOWS中控制打印字体的长宽,而不受限于SIZE 的限制-Delphi资料 也谈为Delphi中数据库报表加网格 用Delphi4的QReport部件生成报表 用Delphi编写打印程序的窍门 用Word做Delphi报表输出工具 在DELPHI 文 本 和 图 形 的 打 印 在Delphi中运用QuickReport实现多栏列印 在打印或打印预览前如何获取报表页数-Delphi资料 自定义快速报表的打印预览窗口-Delphi资料 Delphi 3 图形VCL中Bug修改方案 Delphi hint的字体和色彩如何改变 Delphi3.0中复活节彩蛋及实现 Delphi数据库应用程序开发中图像数据的存取技巧 DELPHI图形编辑技巧二则 DELPHI显示JPEG图像文件 Delphi中CANVAS使用三例 Delphi中的图形显示技巧 怎么样看mfc向导编出来的程序? VB API 知多少? 急问!!请大家指点一下! 关于路径的问题! 急问!!请大家指点一下! 急问!!请大家指点一下! 女孩之为什么? 特别欢迎mm,jj进 如何在SQLSERVER的數據表中只是鎖定那條紀錄的那個字段?請高手幫幫忙!無限感激 简单的问题 为什么局域网的客户机有些网站访问不了? 动态创建CComboBox控件,为什么不能出现下拉框? 如何定义自己的包? 有会用VB读出ACCESS2000密码的吗? printf的问题,快速结帖 明天去新公司上班,散分!! 关于以前asp中的内置函数 想请问各位朋友一个问题 高分 如何择书与读书? mail发送问题 不知大家有没有测试过,似乎ADO的速度比DAO慢很多! 想请问各位朋友一个问题 想请问各位朋友一个问题 清那位高手指点一下 上海人,请讲信誉,我已忍无可忍了(放分) 修改计算机的名字导致SQL7.0不能启动,请问有什么修补的方法而不用重新安装SQL? c++ primer 候洁译与潘爱民译那个好些?? 为什么我的机会突然黑屏,但主机其实又没有关呢? 各位大虾,我是菜鸟,请问? 客户端的linux怎么才能通过域和代理的验证?? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 菜鸟问题:PHP中的变量使用前一定得声明吗?? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 用光驱看电影时经常说“显示器刷新率超出范围”,然后就只能重启,这是怎么回事? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 请问哪里可以免费下载到linux的源代码啊?谢谢! 如何择书与读书? 加QQ:82439610 我来建个ORACLE、PL/SQL的QQ群! 大家多交流! 我想转行到计算机软件,您有什么建议呢? 各位高手,看看这个贴!!谢谢 菜鸟问题:请教red hat下用.iso的安装镜像文件升级软件包的问题 这个中秋霉到家了,看看还有没有比我更霉的,同时祝愿自己能快点度过难关好起来!!!!!!!!!! 帮忙看看这个SQL语句什么地方错了? 此上机题的程序代码应该怎么写 想找个unix高手,有没有啊? 那里有java的帮助手册下载?类似于萎软的msdn & 0xFFF0是什么意思 银行存钱手续费问题 计算机网络——熊桂喜 译 INPUT如何用图片作背景? 谁能给我贴一个 Regular 动态 mfc-dll的例子! 轻气是什么东西,是什么气 如今故事发展成就一个我,是什么歌里的歌词 你的故事讲到哪了,是什么歌的歌词 登杆作业时在杆上传递工具、器材,应注意哪些安全事项? WP版冒险小镇adventure town如何通过修改时间一次性获得大量金币 可以用中水洗澡吗?对身体会有什么危害啊?真有那么吓人吗?.是“中水”啦.呵呵! 太空生活是可怕的探险?有人说杰瑞 M.利宁杰的太空生活是可怕的探险,(杰瑞 M.利宁杰 是美国宇航员) pass through their “adventure window“ 这个短语是啥子意思 adventure window 不是冒险窗口的意思 哪里有开发小朋友脑潜能或者训练脑力的活动? Photos of my ar,these,of,photos,my,family,怎么连成句子 俄“质子”火箭搭载美国通讯卫星升空美国承认窃听事件对美国与伙伴国关系造中国周边外交分量加重 升级、提速、加西方盟友会不会因“监听”散伙?美国监听丑闻变“质”环保部:上半年新疆青海等省区氨氮排放人社部:正研究办法治理公职人员“吃空亚冠决赛今夜首战 恒大优势大或破\"媒体称广州公务员年收入超17万 不少女子超市门口产下龙凤胎续:其亲人已经杭州一头藏獒蹿出工地咬伤小区保洁员把全国大市场带到为期一年专项行动“转正”路上的网络文学海口仲夏文艺季开幕海南戏 海北热滇南山水普者黑夫妻摘毛豆日入近千元真重视真投入才能收实效文化遗产保护呼吁全民参与126亿元帮万户居民“出棚上楼”农博会3天成交7700多万元死神之流星东海屠三国志之刘备有子刘封纵横志阿尔斯大陆暗黑瞳孔异世神君六界纵横暗黑魔兽大穿越铁生烟妖精尾巴中的游戏者犹太新会堂旅游大皇宫旅游考山路旅游一眼看三国旅游金莲映日旅游机械林场旅游海王九岛旅游两江四湖新景区旅游乌珠穆沁草原旅游乌拉盖水库旅游胶州湾跨海大桥旅游
    备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘