2009年11月11日星期三

WVisual Search Section Four

今天来说说,关于google map的一个小把戏,先给图


Wvisual Search -- html view (2)


目的就是在拖动google map的时候,可以自动更新中心点的准确位置,当地的天气情况和显示位置的最新资讯,这就是QtWebkit+Google Map v3+Google Weather+Google News的一个小应用。主要使用到了Qtwebkit网页和本地的一个混编,有了Qt网页和本地软件的界限都比较模糊了,现在又出来了QtwebClient(),再给一个web app的demo,机制大家可以看这里,类似于一个java的applet。

先说说实现的过程,初始化Google Map,当然最好有一个本地的Google Map的html本地文件,每次载入更好。在html本地文件中,增加Map的监听事件
google.maps.event.addListenner(map,"center_Changed",centerChanged);
设置一个定时器,每过一段时间去检测一次,如果现在的中心点发生了改变,那么就去解析当前的地址
geocoder.geocode({'latLng':map.get_center()},getAddressName);

地理信息解析到了之后,会自动触发getAddressNamegetAddressNmae传得是一个函数指针(我是这样认为的)

function getAddressName(results,status)
{
addresssresult = results; //addressres是我的一个全局变量
if(status ==google.maps.GeocoderStatus.OK)
{
if(status !=google.maps.GeocoderStatus.ZERO_RESULTS)
{
var c =address[0].formatted_address;
mapNews.getCityName(c);
}
else
{
mapNews.findFailed();
}
}
}

这里的mapNews是我用webkit的在html中增加的一个我的对象,具体做法连接

connect(frame,SIGNAL(javaScriptWindowObjectCleared),this,SLOT(attachObject));
void QMapNews::attachObject()
{
page()->mainFrame()->addToJavaScriptWindowObject("mapNews",this);
}

现在可能你就恍然大悟了 :-)
在我们的本地getCityName之后,对地址进行解析,然后到Google News进行爬取,网址是
http://news.google.cn/news?hl=zh-CN&ie=UTF-8&q=YourAddress

用js做一下处理,
至于天气大致相同,下面是你得到具体位置之后得到该地区天气数据的地址
http://www.google.com/ig/api?hl=zh-cn&weather=,,,%1,%2
%1 %2用该地址的纬度和经度代替,可以在html中使用
var lat =map.get_center().lat();
vat lng =map.get_center().lng();
得到
只不过你访问的时候,Google Weather会返回给你的是一个xml,用QXmlStreamReader进行一下,处理就OK了。

2009年11月4日星期三

WVisual Search Section Three

今天,我要展示一下,所谓的Html view,
Wvisual Search---Four Function其实在我的第一篇blog中aharef: html标签可视化的qt实现过程 ,已经谈到了实现的过程,但是不经意间在网上搜到了这篇文章Websites as GraphsWe need money not art,Markavian开发出了一个remix版本,用户可以对其中的每个点hoverEnter或者hoverleave的时候,会显示标签的内容.
mkv_html graph

我现在的目标跟他相似,只不过我显示的是具体的标签,而不是标签中所以的内容,因为如果现实标签所有的内容的话,这样UI可能会有很大困难,而且我看了一下,如果打开那个applet的话,CPU就50%了,不管生成是否结束,或者网页节点为100个或者2000个,而且我的链接可以点击,并且用默认浏览器打开,实现很简单.......,有了前一篇文章,只需要简单的剔除tag和它的attribute,然后再paintevent画一下,就OK了,不仅可以拖拽节点,cpu也很稳定,这个功能重新增强了之后,已经加入到Wvisual Search中了............have Fun

Wvisual Search -- html view (2)