`
rensanning
  • 浏览: 3538648 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37971
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:606465
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:681085
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:88704
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401239
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69551
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91416
社区版块
存档分类
最新评论

使用Titanium Mobile开发iPhone/Android应用(06)- Twitter客户端之GPS和Map

阅读更多
做个像样的智能应用

直到上一篇,我们说了开发应用当中必须的Titanium的基本功能。从这篇开始我们说说智能手机特有的GPS,照相机等功能。能够很方便使用GPS,照相机,加速度感应器等功能,并且不管是iPhone还是Android都是用同样的代码来实现也是Titanium的一点优势。

GPS信息和Map

Twitter中,也有发送位置信息的功能,所以这回我们扩展这部分发信功能。在前几回代码的基础上,我们修改代码后,发信页面将大概是下边这个样子:



按下左边的Location按钮后,在页面的下部将用地图表示出来现在的地理位置,在文本框中输入信息后,点击Post按钮发送带有现在位置信息的Tweet。如果不在Twitter中设置接收地址位置信息的话,即使发了GPS信息也将被无视。实际用的时候需要把设置变更一下。改变设置后,自己家的位置信息也有可能被公开,特别要注意不要在家里运行应用哦。

接下来我们就开始说一下怎么编写代码,在前几回我们做的message_windo.js中我们追加一下代码。

var mapview = Titanium.Map.createView(
    {
        width: 320,
        height: 240,
        top: 220,
        mapType: Titanium.Map.STANDARD_TYPE,
        region:{latitude:40.0, longitude:130, latitudeDelta:30, longitudeDelta:30},
        animate:true,
        regionFit:true,
    }
);
mapview.hide();
win.add(mapview);

这部分代码是用来表示表示地图的。width, height, top等其他的UI控件的设置没有什么变化。需要注意的是region的参数。在这里设置的是地图中心的维度(latitude),经度(longitude),大小(latitudeDelta, longitudeDelta),这个也要按实际的地理范围来设置,例子里的代码大概是日本附近的位置。但是,这样的代码我们运行后,当按下Location按钮后,开始页面会表示出来,view做成后立即像mapview.hide()表示的View就消失了。

需要追加一下代码。
Titanium.Geolocation.purpose = 'Twitter Post';
function setCurrentPosition () {
    Titanium.Geolocation.getCurrentPosition(
        function(e) {
            textArea.blur();
            if (!e.success || e.error)
            {
                alert('Get GPS NG!');
                return;
            }

            latitude = e.coords.latitude;
            longitude = e.coords.longitude;

            var currentPos = Titanium.Map.createAnnotation(
                {
                    latitude:latitude,
                    longitude:longitude,
                    title:"Here",
                    pincolor:Titanium.Map.ANNOTATION_GREEN,
                    animate:true
                }
            );
            mapview.addAnnotation(currentPos);
            mapview.show();
            mapview.setLocation(
                {
                    latitude:latitude,
                    longitude:longitude,
                    latitudeDelta:0.01,
                    longitudeDelta:0.01
                }
            );
        }
    );
}


在这部分代码中,我们使用GPS获取位置信息,然后在刚才做的地图上表示出来现在的位置。而且会在现在的位置做一个标记。Titanium.Geolocation.purpose中设置的文字,将在使用该应用的用户使用该应用后,以Dialog的形式提示用户将要获取地理信息。iOS 4以后的版本中,必须设置这部分内容。

Titanium.Geolocation.getCurrentPosition是获取地理信息的函数,并设置回调函数,取得地理信息后,调用回调函数,并把结果e传递给回调函数。其中从e.coords对象我们可以获取现在的位置(coords.latitude, coords.longitude)和速度(coords.speed)以及朝向的角度(coords.heading)等信息。详细的信息内容可以查看这里

取得经度纬度数据后,使用Titanium.Map.createAnnotation创建在地图上做标记。再把做好的Annotation对象中,通过mapview的addAnnotation方法追击到地图上。

在这个代码中,表示Annotation之后,调用mapview.show()来隐藏开始表示的地图,然后通过setLocation滚动到现在的位置。

最后追加获取地理位置信息的按钮。

var locationButton = Ti.UI.createButton(
    {
        top: 170,
        left: 10,
        width: 100,
        height: 44,
        title: 'Location'
    }
);

locationButton.addEventListener(
    'click',
    setCurrentPosition
);
win.add(locationButton);


追加这部分代码后,在页面上就能看到Location按钮了,点击该按钮后,就能表示现在的位置信息了。

往Twitter发信

到现在我们已经能够获取到位置信息了,但是还没有编写往Twitter发信的代码。
message_window.js的tweet函数的开始位置如下修改代码:

Ti.include("lib/twitter_api.js");
//initialization
Ti.App.twitterApi = new TwitterApi({
    consumerKey:'YOUR_CONSUMER_KEY',
    consumerSecret:'YOUR_CONSUMER_SECRET'
});
var twitterApi = Ti.App.twitterApi;
twitterApi.init(); 

var latitude;
var longitude;
function tweet(message) {
    var params = {status: message};
    if (latitude && longitude) {
        params['lat']  = latitude;
        params['long'] = longitude;
    }
    twitterApi.statuses_update(
        {
            onSuccess: function(responce){
                alert('tweet success');
                Ti.API.info(responce);
            },
            onError: function(error){
                Ti.API.error(error);
            },
            parameters:params
        }
    );
}


在YOUR_CONSUMER_KEY 和 YOUR_CONSUMER_SECRET 中设置自己的Cunsumer Key和Consumer Secret。

这里,把latitude, longitude定义在函数的外边,然后在刚才说过的Titanium.Geolocation.getCurrentPosition方法当中把当前的位置信息数据设置进去。在tweet函数中使用相同的变量,取得位置信息后,往Twitter当中发信中。


实际发信成功后,能在发信的位置看到这样的Tweet泡泡。

刚才的代码中还有一个需要注意的地方,在开始的位置,把twitter_api.js文件include进来,以前的代码中使用oauth_adapter.js的地方变更来的。使用twitter_api.js能够很轻松的做Twitter客户端。

为了让上边修改的代码能够动起来,我们还需要修改从table_view.js读入message_window.js并打开窗口的处理。具体是从Window对象的open()方法变为Ti.UI.currentTab.open方法。

总结

像这样我们能够很轻松的通过Titanium获取GPS信息和Map信息。在以后我们将陆续为大家说明如何使用照相机和加速度感应器功能。

  • 大小: 98.3 KB
  • 大小: 72.4 KB
2
0
分享到:
评论

相关推荐

    Titanium Mobile API

    该工具允许开发者使用 JavaScript 编写应用程序,并通过一套统一的 API 接口访问原生移动设备功能,如 GPS 定位、摄像头、通讯录等,同时能够编译为 iOS 和 Android 平台的原生应用程序。 #### 二、Titanium Module...

    TITANIUM智能手机应用开发教程

    本书由Boydlee Pollentine撰写,包含了超过80个实际的开发示例,旨在帮助读者快速掌握TITANIUM的使用技巧,并能够创建针对iPhone和Android平台的原生移动应用。 - **目标读者**:本书适合有一定JavaScript基础并对...

    Titanium中Httpclient访问REST 服务

    Titanium是一款JavaScript开发的开源移动应用框架,它允许开发者使用JavaScript编写原生iOS和Android应用。在Titanium中,我们可以通过HTTPClient模块来发送HTTP请求,与RESTful Web服务进行通信。REST...

    Android-titanium_mobile.zip

    Android-titanium_mobile.zip,带有javascript的本地ios、android和windows应用程序,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    sublimetext-tita, Tita Titanium Mobile/Alloy sublime text 2插件.zip

    sublimetext-tita, Tita Titanium Mobile/Alloy sublime text 2插件 这个插件不再主动地维护 ***因为我不再使用 st2/st3 。 有人对 fork 感兴趣并维护它?替代插件:...

    TitaniumMobile开发跨平台iOS和Android应用

    ### 关于Titanium Mobile开发跨平台iOS和Android应用 #### 我们的主角-Titanium Mobile Titanium Mobile是一种跨平台的移动应用开发框架,它允许开发者使用JavaScript、HTML和CSS来构建高性能的原生应用程序。该...

    Titanium使用JavaScript来开发原生iOSAndroid和Windows应用

    Titanium是一个开源的移动开发框架,它允许开发者使用JavaScript语言来构建原生的iOS、Android以及Windows应用程序。这个框架的核心理念是提供一个跨平台的解决方案,让开发者可以用一种语言编写代码,然后在多个...

    钛备份 Titanium Backup v3.8.6 捐赠版 for android -- 安卓 天涯浪子

    钛备份 Titanium Backup,备份你的程序及程序数据,并支持定时备份等功能。 功能很强大,有此软件,不管你的格机还是重刷ROM,在重装软件时都是无痛的,非实适用经常捣鼓手机有机友! 免费版功能: * 无时间限制 *...

    Titanium开发者平台介绍

    - **软件安装**:安装Xcode和iOS SDK(对于iOS应用开发),Android SDK和JDK(对于Android应用开发)。 - **编辑器**:选择一款文本编辑器,如vi、TextMate等。 - **数据库客户端**:如果应用涉及到数据库操作,可能...

    [Titanium] Appcelerator Titanium 移动应用开发教程 (英文版)

    [Packt Publishing] Appcelerator Titanium 移动应用开发教程 (英文版) [Packt Publishing] Creating Mobile Apps with Appcelerator Titanium (E-Book) ☆ 图书概要:☆ Develop fully-featured mobile ...

    Titanium Mobile SDK 3.1.0 Apidoc 离线版

    Titanium Mobile SDK 3.1.0 是一个用于构建原生移动应用的开发工具,尤其针对iOS和Android平台。这个版本的Apidoc是开发者的重要参考资料,它包含了完整的API文档,帮助开发者理解并使用Titanium框架的各种功能。...

    Titanium中文版开发手册

    Titanium是一个开源的JavaScript平台,允许开发者使用JavaScript、HTML和CSS来构建原生的iOS、Android和Windows应用。这份翻译版的手册覆盖了Alloy框架的多个核心概念,为开发者提供了一个全面的参考。 1. **Alloy...

    前端开源库-node-titanium-sdk

    总之,`node-titanium-sdk`是前端开发者进入跨平台移动应用开发领域的强大工具,结合Node.js的生态系统,它提供了一条高效的开发路径,让开发者可以用熟悉的JavaScript技术创建高性能、多平台的应用。

    Titanium plugin开发初探

    在移动应用开发领域,Titanium 是一个流行的选择,它允许开发者使用 JavaScript 来构建原生的 iOS 和 Android 应用。Titanium 的核心理念是通过跨平台的 JavaScript API 提供与原生功能的无缝对接,而插件开发则是这...

    Mobile-UXSDK-Android:DJI Mobile UXSDK是一套与产品无关的UI对象,可使用DJI Mobile SDK快速跟踪Android应用程序的开发

    UX SDK是一套与产品无关的UI对象,可使用快速跟踪Android应用程序的开发。 另外,请查看的新开放源代码版本。 一体化 通过Maven声明依赖项: < groupId>com.dji</ groupId> < artifactId>dji-uxsdk</ ...

    适用于封隔器,保护器,混淆器和奇数的Android应用程序标识符-适用于Android的PEiD-Android开发

    有关此工具的用途的更多信息,请查看:Android编译器指纹技术,使用APKiD检测盗版和恶意Android应用APKiD:适用于Android应用的PEiD安装pip install --upgrade wheel pip wheel --wheel-dir = / tmp / yara-python -...

Global site tag (gtag.js) - Google Analytics