上一篇,使用Intellij Idea 搭建PhoneGap Android开发环境中,简单的介绍了PhoneGap Android开发环境的搭建,并且开发了Hello World的应用,本篇,我们继续学习使用PhoneGap进行开发,获取用户设备的位置信息,通过获取经纬度实现位置上报的功能,接下来,开始本篇的学习。

我们在上篇module的基础上进行开发,主要是修改index.html中的内容,为了操作DOM方便,我们引入jquery.min.js,为了通过 设备的经纬度获取详细的位置信息,我们使用了BaiduMap提供的API,需要注册百度开发者账号,并且创建应用,获取相应的key,这里不在赘述,详 细看这里。

初始的index.html如下所示:

html>

body, html, #map {

width: 100%;

height: 100%;

overflow: hidden;

margin: 0;

}

Hello PhoneGap

Hello PhoneGap

接下来,我们需要通过phonegap提供的api,编写js代码获取相应的设备经纬度信息,详细的官方api见这里。首先我们在应用启动的时候增加一个Listener,调用navigator.geolocation.getCurrentPosition方法获取当前设备的经纬度信息,getCurrentPosition方法接收两个Callback函数,分别对应定位成功或失败的情况,代码如下:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {

navigator.geolocation.getCurrentPosition(locateSuccess, locateError);

}

function locateSuccess(position) {

navigator.notification.alert("定位成功!", null, "提醒");

}

function locateError(error) {

navigator.notification.alert("定位失败:" + error.message, null, "警告");

}

我们发现在locateSuccess函数中,有一个position参数,这个是定位成功后phonegap封装的包含位置信息的一个参数,通过 position.coords,我们可以拿到成功后的经纬度,海拔等一组地理坐标信息,这里只是简单的获取一下经纬度信息,并将其显示在屏幕上,代码如 下:

var locate = $("#geoLocation");

var html = "经度:" + position.coords.longitude + "
纬度:" + position.coords.latitude;

locate.html(html);

接下来是,通过经纬度信息获取当前位置的功能,通过baidumap提供的API,我们使用了javascript Api极速版来显示地图等信息,详细见这里。代码如下:

var map = new BMap.Map("map"); //在相应的DOM处展现地图

var point = new BMap.Point(position.coords.longitude, position.coords.latitude);

map.centerAndZoom(point, 14); //以当前经纬度信息为地图中心点

map.addOverlay(new BMap.Marker(point));//地图上添加标注

//            map.enableScrollWheelZoom();

var gc = new BMap.Geocoder();

//根据当前地图中心点,获取详细的位置信息:省市区街道牌号等

gc.getLocation(point, function (rs) {

var addComp = rs.addressComponents;

var address = addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber;

//将详细的位置信息追加到指定的DOM中

locate.html(locate.html() + "
地址:" + address);

});

通过上面的开发,我们已经获取了设备的经纬度及位置信息,但是并没有对位置信息进行保存,在正式的开发应用中,我们经常需要对这些信息进行保存持久化等操 作,接下来,我们来看一下通过phonegap进行位置的上报,很简单,通过ajax提交请求,获取响应即可,代码如下:

//自动位置上报

var url = "http://192.168.0.32:8888/app/location.jfinal";

var data = {

latitude: position.coords.latitude,//纬度

longitude: position.coords.longitude,//经度

uuid: device.uuid// 设备唯一标识

};

$.post(url, data, function () {

navigator.notification.alert("自动位置上报成功!", null, "提醒");

});

至此,我们的应用已经基本开发完整,在服务端代码的编写中,我们只需要通过request获取相应的参数信息,并加以持久化即可,在一些移动定位类的应用中,处理逻辑也大都如此,最后,我们来看一下完整的效果。如下图:

phonegap文件上传(java_php),Android应用开发之使用PhoneGap实现位置上报功能相关推荐

  1. android批量文件上传(android批量图片上传)

    项目中多处用到文件批量上传功能,今天正好解决了此问题,在此写出来,以便日后借鉴. 首先,以下架构下的批量文件上传可能会失败或者不会成功:1.android客户端+springMVC服务端:服务端采用o ...

  2. php后端上传文件,php实现文件上传方法_后端开发

    python计算平均值_后端开发 python计算平均值的方法:1.首先提示用户输入数字:2.然后初始化sum总和的值:3.接着循环输入要计算平均数的数,并计算总和sum的值:4.最后利用公式[总和/ ...

  3. Android开发文件上传格式,(android开发)使用okhttp上传文件

    开发android手机客户端,常常会需要上传文件到服务器,比如:你手机里的照片. 使用okhttp会是一个很好的选择.它使用很简单,而且运行效率也很高. 首先,在 app/build.gradle 的 ...

  4. HTTP协议编程,实现文件上传,Android客户端代码

    第一步:编写FormFile实体类,用于封转上传文件的属性 import java.io.File; import java.io.FileInputStream; import java.io.Fi ...

  5. NodeJ+Express+Vue+ElementUI+multer 实现upload文件上传(纯JS开发后台功能),记住不是java的哦

    本帖子用于本人开发过程中,开心了想记录的一些知识点,转载请附上原文链接 ^V^ 啾咪啾咪 1. .vue 页面的代码,什么引入啥啥的略过喏 template里的代码块 <el-form-item ...

  6. Struts2.0实现的文件上传(单附件和多附件)以及附件下载功能

    --------------------------------------------------单附件上传:-------------------------------------------- ...

  7. 轻松搞定阿里OSS文件上传和图片下载

    轻松搞定阿里OSS文件上传和图片下载 目录 1. 阿里云oss账号准备   1.1 注册阿里云账号,并开通OSS存储服务   1.2 创建RAM子用户并使用子账户的AccessKeyId和Access ...

  8. android上传文件用哪个布局,每周总结20130821——android控件的尺寸、http文件上传...

    Android控件的尺寸 android开发中,可以通过编写XML格式的布局文件来实现布局,也可以用纯代码进行布局,通常都是选择XML文件布局.在XML布局文件中,与控件的尺寸有关的属性有androi ...

  9. Android 上传图片到服务器(多文件上传)

    Android客户端的UI与<Android 上传图片到服务器(单文件上传)>唯一区别增加了多文件上传的功能. 1.Android客户端多文件上传核心代码: * 多文件上传* @param ...

  10. android http文件上传,Android Http文件上传方法和实践

    文件上传在应用中是比较常用的的一种功能,比如用户的意见反馈功能.用户可以上传图片,音视频等文件,方便用户反馈问题的情况. 下来我将和大家一起梳理下需要掌握的知识,少走弯路一步到位,实现文件上传功能. ...

最新文章

  1. 华为,牵手这所新大学!
  2. Python SQLite 用法
  3. 麦肯锡AI应用报告:深度学习是蓝海还是深坑?
  4. HTC推出新款VR头显,奇怪的是只在日本销售
  5. 对话系统(二)-普通神经网络
  6. 阿里 RocketMQ 如何让双十一峰值之下 0 故障?
  7. 更改整个目录文件的所有权限
  8. pyflink的local模式实验记录
  9. Oracle的rownum原理和使用(整理几个达人的帖子)
  10. 数据增长率怎么算_20年老股民告诉你5个数据可轻松算出股价是否高估
  11. 修改表名的sql语句_SQL第一关——入门
  12. Mysql8秒级加字段_MySQL8.0大表秒加字段,是真的吗?
  13. (解决MATLAB的使用问题)避免每次双击.m文件都会自动打开一个matlab程序
  14. TensorFlow教程之API DOC 6.1.3 Class tensorflow::RandomAccessFile
  15. 全世界都误会我们了。。。。。。。。
  16. 部署项目在Tomcat出现,tomcat报错More than one fragment with the name [org_apache_tomcat_websocket]
  17. python报告生成器_利用Python实现报告自动生成
  18. python求和1到100_python实现1加到100
  19. ibm服务器芯片架构,IBM服务器X架构技术综述(图)
  20. BAPI中的货物移动事务代码

热门文章

  1. 《深入理解Hadoop(原书第2版)》——3.4第一个Hadoop程序
  2. 【转】在淘宝一年测试工作的感悟
  3. openstack手动部署简单记录
  4. 【Android综合应用】概述
  5. hexo添加_hexo 如何给文章添加目录
  6. word保存不了磁盘已满_【Word技巧】word使用终极技巧,工程人必会(二)
  7. android 集成融云客服,第三方客服
  8. mysql教程手机版_MySQL 入门教程
  9. treeset java api_JAVAAPI学习值TreeSet类
  10. 16进制转浮点型_浮点型变量和BigDecimal的使用