17094734564住宅使用权没有期限位置

位置感知应用指南 - Windows app development
位置感知应用指南
本主题描述需要访问用户位置信息的应用的性能指南。
请参阅以查看 Windows 应用商店应用如何检测用户的位置信息。
要了解如何在你的应用中使用地理位置,请参阅:
应做事项和禁止事项
仅在应用需要位置数据时开始使用位置对象。
应用首次访问
对象将触发许可提示。上述操作发生在应用首次调用
或向事件处理程序注册
事件之时。如果某个应用的主要目的不需要访问位置数据,那么只要应用启动就显示使用设备的权限提示,这可能会使用户感到困惑。
如果位置信息对于你的应用来说并非必要,则在用户尝试完成需要该信息的任务之前不要访问它。例如,如果社交网络应用有一个“使用位置信息登记”按钮,在用户单击该按钮之前,该应用不应该访问位置信息。如果你的应用主要功能要求立即访问位置信息,你可以这样做。
仅在 Windows 上, 对象的首次使用必须在主 UI 线程上执行,以便向用户显示同意提示。首次使用 Geolocator 可能会首次调用 ,或首次向处理程序注册
敏感设备使用指南中将进一步介绍同意提示。这意味着在使用 JavaScript 的应用中,不应在激活处理程序中出现对 Geolocator 对象的首次使用。
告诉用户使用位置数据的方式。
提供 UI,使用户可以手动刷新他们的位置信息。
在等待获取位置数据时显示进度栏或进度环。有关可用进度控件及其使用方法的信息,请参阅 。
定位服务被禁用或不可用时显示一条相应的错误消息或对话框。
当用户吊销对位置数据的访问时,或者由于其他原因数据对应用不可用时,将向用户显提供相应的错误消息。
我们建议你在 Windows 上使用此消息:“你的定位服务当前已关闭。请使用“设置”超级按钮将它们重新打开。”在 Windows Phone 上,你可以使用以下消息:“你的设备上已禁用定位。要启用定位,请转到“设置”并选中定位。”
请勿让错误消息中断应用流。如果对于你的应用来说位置数据不重要,则将此消息显示为嵌入式文本。社交网络或游戏应用属于此类别。
如果位置数据对于应用的功能来说非常重要,则将此消息显示为浮出控件或对话框。地图和导航应用属于此类别。
不要尝试以编程方式显示“设置”超级按钮。
有关内联、对话框和浮出控件错误消息的示例,请参阅以及的“错误”部分。
当用户禁用对位置数据的访问时,清除缓存的位置信息并释放 。
如果用户通过“设置”关闭对位置信息的访问,则释放
对象。应用在任何位置 API 调用时都将收到 ACCESS_DENIED 结果。如果你的应用保存或缓存了位置数据,则在用户吊销对位置信息的访问时需清除缓存的所有数据。提供另一种在位置数据无法通过定位服务提供时手动输入位置信息的方法。
提供用于重新启用定位服务的 UI。例如,提供重新实例化
对象刷并重新尝试获取位置信息的刷新按钮。
使应用提供 UI 用于重新启用定位服务。—
如果用户在禁用位置访问之后重新启用位置访问,则不会通知应用。 属性不会更改,并且没有
事件。你的应用应该创建新的
对象并调用 ,以尝试获取更新后的位置数据或重新订阅
事件。如果之后状态指示已重新启用位置,请清除之前应用显示的所有用于通知用户定位服务已被禁用的 UI,并对新状态执行相应的响应。
当用户明确地尝试使用需要位置信息的功能时,或者在其他任何适当情况下,你的应用也应该在激活后重新尝试获取位置数据。
如果你的应用不需要接收位置信息,使用一次性位置信息请求。例如,向照片添加位置标记的应用不需要接收位置更新事件。相反,它应该使用
请求位置,如中所述。
当你进行一次性位置请求时,你应该设置以下值。
指定由应用请求的精度。有关使用这些参数的建议,请参阅下方。
的最大存留期参数以指定多长时间之前获取的位置对应用有用。如果你的应用可以使用几秒或几分钟前的位置,则你的应应用几乎可以立即收到位置并且有助于节省设备电源。
的超时参数。这是你的应用可以等待返回位置或错误的时长。你将需要在对用户的响应和应用所需的精度之间做出权衡。
当需要频繁的位置更新时,使用连续的位置会话。将
事件用于实时检测超过特定阈值的移动或连续的位置更新。
当请求位置更新时,你可能要通过设置
指定由应用请求的精度。你还应该设置需要位置更新的频率,方法是使用
指定移动阈值。某些应用仅在用户移动较大的距离时才需要位置更新。例如,提供当地新闻或天气更新的应用,除非用户的位置更改为其他城市,否则可能不需要位置更新。这种情况下,你可以通过设置
属性来调整位置更新事件所要求的最小移动量。此操作具有筛选
事件的效果。仅当位置更改超过移动阈值时才引发这些事件。
在 Windows 上,当你设置
属性时,不会更改位置数据源(如 Windows 定位程序或附加的 GPS 设备)计算位置的频率。在 Windows Phone 上,MovementThreshold 属性与其他因素(例如预计移动速度)一同用于调整在系统中计算位置的频率,以节省设备电源。
使用与你的应用体验协调并最大程度减少系统资源使用量的 。 例如,天气应用可能只需要每隔 15 分钟进行一次数据更新。除了实时导航应用之外,大多数应用都不需要精度很高的持续位置更新流。如果你的应用不需要最精确的数据流或者不需要经常更新,则设置 ReportInterval 属性以指示应用所需的位置更新最低频率。这样,位置源就可以仅在需要时计算位置,从而可以节省电耗。
需要实时数据的应用应将
设置为 0,以指示最低间隔尚未指定。在 Windows 上,当报告间隔为 0 时,应用以最精确的位置源发送事件的频率接受事件。在 Windows Phone 上,应用接收更新的频率将取决于应用请求的精度。
提供位置数据的设备可跟踪不同应用所请求的报告间隔,并以请求的最小间隔提供数据报告。这样,对准确性要求最高的应用就会接收到其所需的数据。因此,如果其他应用请求的更新频率更高,则定位程序可能以高于你的应用所请求的频率生成更新。
不保证位置源会针对给定的报告间隔兑现请求。 并非所有定位程序设备都跟踪报告间隔,但你仍然应该为那些进行跟踪的设备提供报告间隔。
为了帮助节省电耗,请设置
属性,以向位置平台指示你的应用是否需要高精度的数据。如果应用都不需要高精度的数据,则系统可以不打开 GPS 提供程序以节省电耗。
设置为 HIGH 以启用 GPS 来获取数据。
如果你的应用仅将位置信息用户广告定位,请将
设置为 Default 并仅使用单发调用模式以尽可能减少电耗。
如果应用对精度有特定要求,你可能要使用
属性,而不是 。这在 Windows Phone 上特别有用,在其中通常基于移动电话信标、Wi-Fi 信标和人造卫星获取位置。采用较具体的精度值将有助于系统识别要使用的正确技术,以在提供位置时消耗最低的电源。
如果应用要获取位置用于广告调整、天气、新闻,5000 米的精度一般足够。
如果应用要在街区中显示附近的交易,300 米的精度一般足够用于提供结果。
如果用户查找附件餐厅的推荐,我们可能要获取一个街区内的位置,因此 100 米的精度足够了。
如果用户试图共享他的位置,应用应该请求大约 10 米的精度。
如果应用有特定的精度要求,请使用
属性。例如,导航应用应该使用 Geocoordinate.accuracy 属性来确定可用的位置数据是否符合应用的要求。
考虑启动延迟。应用首次请求位置数据时,定位程序启动时可能会有短暂的延迟(1-2 秒)。在设计应用的 UI 时,请注意以下事项:例如,你需要避免阻止其他使
调用挂起的任务。
考虑后台行为。如果 Windows 运行时应用没有焦点,则该应用在后台挂起时将不会收到位置更新事件。如果你的应用通过记录来跟踪位置更新,则需注意这一点。应用再次获得焦点时,将只接收到新的事件。处于非活动状态时将不会获取发生的任何更新。
有效地使用原始和融合传感器。
Windows 8 支持两种传感器:原始传感器和融合传感器。
原始传感器包括加速计、陀螺仪和磁力计。
融合传感器包括方向、测斜仪和指南针。融合传感器从原始传感器的组合中获取数据。
Windows 运行时
API 可以访问除磁力计之外的所有传感器。 融合传感器比原始传感器更准确和稳定,但能耗也较多。应针对相应的目的使用正确的传感器。有关详细信息,请参阅。
连接待机状态:
仅适用于 Windows。当电脑处于连接待机状态时,始终可以实例化
对象。但是,Geolocator 对象将找不到任何可聚合的传感器,因此对
的调用将在 7 秒后超时, 事件侦听程序将永远不会被调用,而
事件侦听程序将在 NoData 状态下被调用一次。
其他使用指南
检测位置设置的更改
在 Windows 上,用户可以使用“设置”超级按钮或“控制面板”关闭位置功能。有关更改位置设置的 UI 的详细信息,请参阅。在 Windows Phone 上,用户可以在“设置”应用中禁用位置。有关处理用户设置更改的设计指南,请参阅。
检测用户何时禁用或重新启用定位服务的步骤:
事件。如果用户关闭定位服务,则 StatusChanged 事件参数的
属性将拥有值 Disabled。
返回的错误代码。如果用户禁用了定位服务,则调用 GetGeopositionAsync 将失败,且返回 ACCESS_DENIED 错误,并且
属性的值为 Disabled。
如果位置数据对于你的应用至关重要—例如,地图应用—请务必执行以下操作:
如果用户位置发生更改,则处理
事件以获取更新。
按照上述步骤处理
事件,以检测位置设置的更改。有关详细信息,请参阅。
请注意,在位置 API 可用时,它将返回数据。它可能先返回一个带有较大错误半径的位置,然后在更准确的信息可用时使用它更新该位置。显示用户位置的应用通常要在更准确的信息可用时更新该位置。
位置信息的图形表示形式
让你的应用使用
在地区上清晰地指示用户的当前位置。精度有三个主要区段 — 大约 10 米的误差半径,大约 100 米的误差半径,以及大于 1 千米的误差半径。通过使用精度信息,你可以确保自己的应用在可用的数据上下文中精确地显示位置。
对于约等于 10 米(GPS 分辨率)的精度,在地图上可以用一个点或图钉来表示位置。在此精度下,还可以显示经纬度坐标和街道地址。
对于 10 到 500 米之间(大约 100 米)的精度,通常使用 Wi-Fi 分辨率来接收位置。从移动电话获取的位置有大约 300 米的精度。在这种情况下,我们建议你的应用显示一个误差半径。对于需要用一个中心点来显示方向的应用,可以在该中心点的周围显示一个误差半径。
如果返回的精度大于 1 千米,则你可能是在以 IP 级别的分辨率接收位置信息。此精度级别通常过低,以至于无法在地图上精确定位某个特定的地点。你的应用应该避免显示任何图钉或圆圈的地理表示法,而应放大到地图上的城市级别,或根据误差半径放大到相应的区域(例如,区域级别)。
当位置精度从一个精度区段切换到另一个时,会在不同的图形表示形式之间提供优美的过渡。可通过以下方法完成此操作:
让过渡动画更平滑,使过渡保持快速流畅。
等待一些连续的报告确认精度更改,以防止不必要的和过于频繁的缩放。
位置信息的文本表示形式
某些类型的应用—例如,天气应用或本地信息应用—需要在不同的精度区段以文本方式表示位置的方法。请确保清楚地显示位置,并且只详细到该数据中提供的精度级别。
对于约等于 10 米(GPS 分辨率)的精度,接收到的位置数据相当精确,因此可以细化到街区名的级别。还可以使用城市名、州名或省名以及国家/地区名。
对于约等于 100 米(Wi-Fi 分辨率)的精度,接收到的位置数据的准确度适中,因此我们建议你显示的信息可以详细到城市名。避免使用街区名。
对于大于 1 千米(IP 分辨率)的精度,仅显示州名、省名或国家/地区名。
隐私注意事项
用户的地理位置属于个人身份信息 (PII)。下列网站提供保护用户隐私的指南。
对于开发人员 (HTML)
对于开发人员 (XAML)
此页面有用吗?
您对此内容的反馈非常重要。请告诉我们您的想法。
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。
相关开发人员网站
其他 Windows 站点
工具和产品下载
设计模板下载
Hello from Seattle.iOS8 新的“一直在后台使用位置”的提示是什么意思_百度知道
iOS8 新的“一直在后台使用位置”的提示是什么意思
提问者采纳
建议其它的应用都可以不让它始终使用、健身软件之类的应用,这个应用可以在后台始终使用手机的定位服务,除了一些地图软件。 一般情况下  它的意思是
资深电脑人
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁7838人阅读
LocationActivity.java
LocationActivity.java
@author octobershiner
一个演示定位用户的位置并且监听位置变化的代码
package uni.
import android.app.A
import android.content.C
import android.location.L
import android.location.LocationL
import android.location.LocationM
import android.os.B
import android.os.V
import android.util.L
import android.widget.TextV
public class LocationActivity extends Activity {
/** Called when the activity is first created. */
//创建lcoationManager对象
private LocationM
private static final String TAG = &LOCATION DEMO&;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取系统的服务,
manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//第一次获得设备的位置
updateLocation(location);
//重要函数,监听数据测试
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 10,
locationListener);
/*此处更新一下,当activity不处于活动状态时取消GPS的监听*/
public void onPause(){
super.onPause();
locationManager.removeListener(locationListener);
//创建一个事件监听器
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateLocation(location);
public void onProviderDisabled(String provider){
updateLocation(null);
Log.i(TAG, &Provider now is disabled..&);
public void onProviderEnabled(String provider){
Log.i(TAG, &Provider now is enabled..&);
public void onStatusChanged(String provider, int status,Bundle extras){ }
//获取用户位置的函数,利用Log显示
private void updateLocation(Location location) {
String latL
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
latLng = &Latitude:& + lat + &
Longitude:& +
latLng = &Can't access your location&;
Log.i(TAG, &The location has changed..&);
Log.i(TAG, &Your Location:& +latLng);
只修改activity文件是不够的,因为android系统的安全性,对服务采用授权的机制,所以需要修改manifest.xml文件
&?xml version=&1.0& encoding=&utf-8&?&
&manifest xmlns:android=&/apk/res/android&
package=&uni.location&
android:versionCode=&1&
android:versionName=&1.0&&
&uses-sdk android:minSdkVersion=&8& /&
&application android:icon=&@drawable/icon& android:label=&@string/app_name&&
&activity android:name=&.LocationActivity&
android:label=&@string/app_name&&
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&/activity&
&/application&
&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& /&
&/manifest&
很多朋友可能会有疑问,那就是GPS定位在android虚拟机上的调试问题,其实是可以模拟的,大家启动虚拟机,然后打开DDMS的界面,左侧device栏目会动态显示虚拟机上各项服务启动的情况,待出虚拟机现解锁界面后,单机device栏目下面的emulator行,这时会发现下面的emulator control下面会有 location control ,打开里面的manual标签,哈哈相信你已经看到了经纬度,你可以更改。运行你的程序,然后单击刚才经纬度设置的send按钮就可以模拟接受到新的地理位置了。
在这个demo中 我用到了Log显示状态,推荐使用这种方法,很好用,想了解的朋友可以参考一下我的另一篇文章,学会巧妙的使用Log,跟推荐大家搜一下sundyzlh的教学视频。
关于LOG的使用
最终的效果
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:118939次
积分:1579
积分:1579
排名:第12148名
原创:36篇
评论:82条
文章:12篇
阅读:77654
(1)(1)(4)(2)(9)(17)(2)(1)(1)(1)C#开发微信门户及应用(13)-使用地理位置扩展相关应用 - 伍华聪 - 博客园
随笔 - 397, 文章 - 20, 评论 - 6028, 引用 - 20
本文继续上一篇《》,继续介绍微信的相关应用。我们知道,地理位置信息可以用来做很多相关的应用,除了我们可以知道用户所在的位置,还可以关联出一些地理位置的应用,如天气,热映影片,附近景点,附近影院,交通事件等等,反正所有和地理位置相关的信息,我们都可以根据需要做一些扩展应用。本文主要介绍利用地理位置信息,如何构建使用这些应用的操作。
1、微信的地理位置信息
在使用前,我们先来看看微信的接口,为我们定义了那些关于与地理位置的信息。其实地理位置的信息,微信分为了两个方面,一个是接收用户的地理位置请求,一个是用户允许上报地理位置操作,定时发送的地理位置信息。
本文主要介绍基于第一种,用户上报地理位置后,如何处理的相关应用。
地理位置的上报操作,就是在输入的地方,选择+号进行添加地理位置,然后选择当前或者指定的地理位置地图,具体操作如下所示。
& & & & & & & &&
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[location]]&&/MsgType&
&Location_X&23.134521&/Location_X&
&Location_Y&113.358803&/Location_Y&
&Scale&20&/Scale&
&Label&&![CDATA[位置信息]]&&/Label&
&MsgId&3456&/MsgId&
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
Location_X
地理位置维度
Location_Y
地理位置经度
地图缩放大小
地理位置信息
消息id,64位整型
有了上面的地理位置信息,我们在程序里面,需要在消息传递过来的时候,定义一个实体类信息,承载相关的地理位置信息,方便我们进一步的处理操作。
/// &summary&
/// 接收的地理位置消息
/// &/summary&
[System.Xml.Serialization.XmlRoot(ElementName = "xml")]
public class RequestLocation : BaseMessage
public RequestLocation()
this.MsgType = RequestMsgType.Location.ToString().ToLower();
/// &summary&
/// 消息ID
/// &/summary&
public Int64 MsgId { get; set; }
/// &summary&
/// 地理位置维度
/// &/summary&
public decimal Location_X { get; set; }
/// &summary&
/// 地理位置经度
/// &/summary&
public decimal Location_Y { get; set; }
/// &summary&
/// 地图缩放大小
/// &/summary&
public int Scale { get; set; }
/// &summary&
/// 地理位置信息
/// &/summary&
public string Label { get; set; }
有了这些信息,我们在信息传递的时候,就能很好得到用户的相关数据了。
如果仅仅为了返回给用户,告诉用户目前的地理位置信息,可以用下面的操作就可以了。
/// &summary&
/// 对地理位置请求信息进行处理
/// &/summary&
/// &param name="info"&地理位置请求信息实体&/param&
/// &returns&&/returns&
public string HandleLocation(Entity.RequestLocation info)
string xml = "";
ResponseText txtinfo = new ResponseText(info);
txtinfo.Content = string.Format("您发送的地理位置是:{0}", info.Label);
xml = txtinfo.ToXml();
2、地址位置的应用处理
不过上面的信息,显然不符合我们扩展应用的要求,因此我们进一步进行完善里面对地理位置信息处理的操作。我们进一步把关于地理位置的操作,放到事件处理模块里面进行处理,处理代码如下所示。
/// &summary&
/// 对地理位置请求信息进行处理
/// &/summary&
/// &param name="info"&地理位置请求信息实体&/param&
/// &returns&&/returns&
public string HandleLocation(Entity.RequestLocation info)
string xml = "";
EventDispatch dispatch = new EventDispatch();
xml = dispatch.DealLocation(info, info.Label, info.Location_Y, info.Location_X);
在处理的时候,我们需要先保存用户的地理位置信息,把它存储到用户的上下文记录里面。这样我们在处理指令的时候,把它获取到,然后传递给相关的方法就可以实现地理位置的扩展应用了。
//保存经纬度
string location = string.Format("{0},{1}", lat, lon);
bool result = BLLFactory&UserSet&.Instance.UpdateUserInput(info.FromUserName, location);
首先对用户地理位置的请求,我根据数据库配置给出了一个用户选择的指令提示,如下所示。
为了对地理位置请求的处理,我定义了一个用于处理这个操作的指令操作
这样整个地理位置的指令操作,就在应答链里面进行很好的跳转管理了。那么为了实现天气、放映影片、附近影院、旅游线路、交通事件等方面的扩展应用,我们应该如何操作呢?
3、地址位置应用扩展
我们知道,百度或者腾讯都提供了一些开放平台,给我们进行各种方式的使用。那么我们这里以使用百度LBS平台应用来构建一些模块。
这上面都有很多相关的接口供使用,我们可以根据其提供的数据格式进行封装,然后进行调用处理就可以了。
刚才说了,我配置了一些指令,用来构建相关的应用,指令的最后是一些事件代码的定义,我们对这些末端的事件代码进行处理,就可以给用户返回相关的信息了,总体的操作代码如下所示。
/// &summary&
/// 其他插件操作,如天气,景点、电影影讯、交通等
/// &/summary&
/// &param name="info"&基础消息&/param&
/// &param name="eventKey"&事件标识&/param&
/// &returns&&/returns&
public string DealPlugin(BaseMessage info, string eventKey)
//(eventKey);
string userInput = BLLFactory&UserSet&.Instance.GetUserInput(info.FromUserName);
string xml = "";
switch (eventKey)
case "event-void-wether":
xml = new WeatherPlugin().Response(info, userInput);
case "event-void-movie":
xml = new MoviePlugin().Response(info, userInput);
case "event-void-cinema":
xml = new CinemaPlugin().Response(info, userInput);
case "event-void-travel":
xml = new TravelPlugin().Response(info, userInput);
case "event-void-traffic":
xml = new TrafficEventPlugin().Response(info, userInput);
这里以天气为例,说明该如何调用百度的接口的,首先我们封装一下相关的接口调用。
/// &summary&
/// 根据参数调用百度接口,获取相关的结果数据
/// &/summary&
/// &param name="location"&地理位置&/param&
/// &param name="ak"&API调用键&/param&
/// &returns&&/returns&
public BaiduWeatherResult Execute(string location, string ak)
location = HttpUtility.UrlEncode(location);
var url = string.Format("http://api./telematics/v3/weather?location={0}&output=json&ak={1}", location, ak);
BaiduWeatherResult result = BaiduJsonHelper&BaiduWeatherResult&.ConvertJson(url);
其中的BaiduWeatherResult 是我根据调用返回的Json结果,构建的一个实体类,用来存储返回的内容。具体代码如下所示。
/// &summary&
/// 天气请求结果Json对象
/// &/summary&
public class BaiduWeatherResult : BaiduResult
/// &summary&
/// 天气预报信息
/// &/summary&
public List&BaiduWeatherData& results = new List&BaiduWeatherData&();
/// &summary&
/// 城市的天气信息
/// &/summary&
public class BaiduWeatherData
/// &summary&
/// 当前城市
/// &/summary&
public string currentCity { get; set; }
/// &summary&
/// 天气预报信息
/// &/summary&
public List&BaiduWeatherJson& weather_data = new List&BaiduWeatherJson&();
/// &summary&
/// 天气预报的单条记录Json信息
/// &/summary&
public class BaiduWeatherJson
/// &summary&
/// 天气预报时间
/// &/summary&
public string date { get; set; }
/// &summary&
/// 白天的天气预报图片url
/// &/summary&
public string dayPictureUrl { get; set; }
/// &summary&
/// 晚上的天气预报图片url
/// &/summary&
public string nightPictureUrl { get; set; }
/// &summary&
/// 天气状况
/// &/summary&
public string weather { get; set; }
/// &summary&
/// &/summary&
public string wind { get; set; }
/// &summary&
/// &/summary&
public string temperature { get; set; }
为了构建返回给客户的图文数据,我们需要构建一个News对象,然后生成XML数据返回给服务器进行处理即可。
/// &summary&
/// 响应用户请求,并返回相应的XML数据
/// &/summary&
/// &param name="info"&微信基础信息&/param&
/// &param name="location"&地理位置:经纬度坐标或者地名&/param&
/// &returns&&/returns&
public string Response(BaseMessage info, string location)
string xml = "";
//"广州" 或者 "116..982368"
if (!string.IsNullOrEmpty(location))
BaiduWeatherResult result = Execute(location, baiduAK);
if (result != null && result.results.Count & 0)
BaiduWeatherData data = result.results[0];
if (data != null)
ArticleEntity first = new ArticleEntity();
first.Title = string.Format("{0} 天气预报", data.currentCity);
ResponseNews news = new ResponseNews(info);
news.Articles.Add(first);
int i = 0;
foreach (BaiduWeatherJson json in data.weather_data)
ArticleEntity article = new ArticleEntity();
article.Title = string.Format("{0}\n{1} {2} {3}", json.date, json.weather, json.wind, json.temperature);
if (i++ == 0)
article.PicUrl = IsDayTime() ? json.dayPictureUrl : json.nightPictureU
article.PicUrl = json.dayPictureU
news.Articles.Add(article);
xml = news.ToXml();
这样就很好实现了整体的功能了,具体界面功能可以访问我的微信(广州爱奇迪)进行了解,下面是功能截图供参考。
如果对这个《C#开发微信门户及应用》系列感兴趣,可以关注我的其他文章,系列随笔如下所示:

我要回帖

更多关于 git 使用 的文章

 

随机推荐