通过gps获得所在位置的经纬度,如何能在车载导航上输入这个经纬度?如果是iphone6连接车载蓝牙手机可以输入坐

下次自动登录
现在的位置:
& 综合 & 正文
Android中通过GPS或NetWork获取当前位置的经纬度
最近了解定位相关的内容,了解到手机客户端通过GPS或NetWork来获取当前移动终端设备的经纬度,要实现该功能要用到Android Framework 中的 LocationManager 类。
具体如何使用参考下面的参考链接。
还有,很多朋友反映用Android的LocationManager不方便,那我觉得可以使用第三方的SDK,比如:百度地图或者其它地图厂商的SDK,这样比较方便,不过要对第三方的地图服务非常熟悉才行。
定位的策略问题就仁者见仁智者见智了。比如第一次进入定位,定位的时间3分钟,如果3分钟后无法定位就获取WifiManager和TelephoneManager,然后把这些信息传给服务器,让服务器
去基站定位。可以参考下面的链接。基站定位我不是很懂。
A:我使用百度的LBS定位包来实现,它集成了基站定位、WLAN、GPS等定位方式,之前通过获取基站LAC、CELLID传给谷歌的API定位,但定位精度和覆盖率太低,应该说百度的位置库较全些,但准确率也不能达到100%。
B:最后使用的方法是获取到手机的基站信息和wifi信息,发送给 。得到的结果中有location信息
继续看,又发现一篇讲解非常细致的,转过来。
做移动互联网就不太可能不碰手机端的开发。上周为了项目需要,俺也挽袖子抡胳膊开始写起了android,还好有java基础,倒也上手快,写了几个小程序,主要都是关于定位方面的。
网上也搜得到一些相关的文章和教程,但给出的例子效果不太好,而且感觉只有其表,却不明其理。因此写出此文,分享一些我的经验。虽然是以android为主,但是我想对其它平台的开发也应该有些帮助。
这篇文章侧重于制定一个合理的定位方案。
手机定位的方式
先科普一些基础知识吧。
最简单的手机定位方式当然是通过GPS模块(现在大部分的智能机应该都有了)。GPS方式准确度是最高的,但是它的缺点也非常明显:1,比较耗电;2,绝大部分用户默认不开启GPS模块;3,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间;4,室内几乎无法使用。这其中,缺点2,3都是比较致命的。需要指出的是,GPS走的是卫星通信的通道,在没有网络连接的情况下也能用。
另外一种常见的定位方式是基站定位。大致思路就是采集到手机上的基站ID号(cellid)和其它的一些信息(MNC,MCC,LAC等等),然后通过网络访问一些定位服务,获取并返回对应的经纬度坐标。基站定位的精确度不如GPS,但好处是能够在室内用,只要网络通畅就行。
还有Wifi定位。和基站定位类似,这种方式是通过获取当前所用的wifi的一些信息,然后访问网络上的定位服务以获得经纬度坐标。因为它和基站定位其实都需要使用网络,所以在Android也统称为Network方式。
最后需要解释一点的是AGPS方式。很多人将它和基站定位混为一谈,但其实AGPS的本质仍然是GPS,只是它会使用基站信息对获取GPS进行辅助,然后还能对获取到的GPS结果进行修正,所以AGPS要比传统的GPS更快,准确度略高。
Android提供的定位接口
在写第一个程序之前,我对android的幻想是这样的:提供了一个函数,能够让我直接从GPS模块中读取经纬度坐标,还有一个函数,能够直接访问网络,获得基站定位的结果。所以,我只需要调用调用函数就可以搞定这一切。
现实和理想总是有很大的差距。Android上的开发完全不是这么回事儿。前面提到过,GPS模块从启动到获取数据之间时间会比较长,可能有2~3分钟时间,所以,如果真有这么一个函数,那么你的程序可能会被这个函数阻塞几分钟。我想正是基于这样的考虑,android上要想获取定位信息,必须使用异步方式。
大概是这个样子:
locManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locListener = new LocationListener() {
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
mobileLocation =
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
这是从网上随便摘一段。简单解释一下代码:
首先,你需要创建一个LocationManager;
然后定义出自己的LocationListener,LocationListener包涵了好几个成员函数,它们都是回调函数。最重要的一个是“onLocationChanged”,这个函数是在android获取了新的location信息之后调用的,你可以在这个函数内来实现自己想要的功能。比如,你可以定义一个内部location变量,一旦这个函数被调用,就将内部location变量设置成最新的值;
最后,调用LocationManager.requestLocastionUpdates,它其实是将定义的locationListener注册到android中。在上面的代码中,这句话是说让LocationListener监听GPS_PROVIDER的变化。GPS_PROVIDER对应于android上的GPS模块获取位置信息,还有一个NETWORK_PROVIDER表示通过network方式获取位置信息。
那么接下来就有问题了,什么时候能够真正获得手机的定位经纬度呢?等着onLocationChanged被调用吧。那它什么时候会被调用?没人知道。我写过一个小程序,测试Network方式下注册过listener之后(requestLocationUpdates函数)和onLocationChanged被调用之间的时间间隔。测试的网络条件很好。反复观察了几次,大部分都可以在几十毫秒内就返回了,但也有一些时候,时间间隔长达几十秒。这意味着,你的用户需要等上几十秒才能有返回。
所以,第一个需要注意的地方是,不要一直等待你的回调函数onLocationChanged被调用。你需要设置一个timeout机制。
这又会引入第二个问题。如果timeout了,但onLocationChanged仍然没有返回,怎么办?难道只能提示用户无法定位吗?
别急,android还提供了一个函数:getlastKnowLocation。这个函数会返回android平台最后一次获取到的位置信息。比如,你可以这样:
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
所以,即便onLocationChanged没有被调用,我们仍然可以获取一个位置信息。当然,这里又引出了第三个问题:这个的返回值值得信赖吗?
如果用过一些LBS或者地图程序,你会发现有一个现象:在某些时候你打开地图结果被定位到的地方是你上一次使用地图程序的位置。这就是因为程序是采用getLastKnownLocation获取的位置。这个问题的解决办法是,需要定义一个标准判断获取到的Location是否可信。Android的Location这个类除了包涵有latitude,longitude,还包含有很多其他的信息,比如何时获取到的,通过哪种方式获取到的,等等。程序员完全可以基于这些信息来判断获取到的Location是否过时或者是否可信。
合理的方案
最后,说一下整体方案。Android的官方文档【1】给出了推荐的方案:
首先注册自己的LocationListener,让它同时监听GPS_PROVIDER和NETWORK_PROVIDER;
然后可以调用getLastKnownLocation获得一个Location值,这个值可以作为一个备选值;
然后在一段用户可接受的时间内,不断接收从onLocationChanged返回的位置,并同之前的值做比较,选取其中的最佳;
最后,会剩下一个筛选后的最优结果,你需要判断这个结果是否可接受。如果可以接受,返回给用户,如果不行,告诉用户无法定位。
整个过程你需要定义两个重要的函数:一个是比较两个Location信息,返回其中好的那个;另一个函数则用来判断Location信息是否可以被接受。
&&&&推荐文章:
【上篇】【下篇】当前位置:&&
android通过gps获取定位的位置数据和gps经纬度
&&&&来源:&互联网& 发布时间:
&&&&android&:&Android一词的本义指“机器人”,同时也是Google于日
logo相关图片(36张) 宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃。&&&&public&:&英语单词,解释为:公共的;公众的、公用的;公务的、政府的;公众、民众、大众。&&&&void&:&中文翻译为“无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。
代码如下:package com.action.android_import android.location.Limport android.location.LocationLimport android.location.LocationMimport android.os.Bimport android.app.Aimport android.view.Mimport android.widget.TextV
public class MainActivity extends Activity {private Location location=@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获得位置服务的名称String serviceName = this.LOCATION_SERVICE;//获得位置服务的管理对象LocationManager locationManager = (LocationManager)getSystemService(serviceName);// 通过GPS获取定位的位置数据location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);updateToNewLocation(location);
/**服务管理对象的监听器*/
//参数1:定位的方式
参数2:监听更新间隔时间(ms)
参数3:监听更新的距离(m) 参数4:监听的方法
locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 2000, 10, new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
public void onProviderEnabled(String provider) {
public void onProviderDisabled(String provider) {
public void onLocationChanged(Location location) {
updateToNewLocation(location);
});}private void updateToNewLocation(Location location) {
TextView tv1;
tv1 = (TextView) this.findViewById(R.id.tv1);
if (location != null) {
latitude = location.getLatitude();
double longitude= location.getLongitude();
tv1.setText("经纬度为:n"+"维度:" +
latitude+ "n经度" + longitude);
tv1.setText("无法获取地理信息");
}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);}
相关技术文章: &&&&
代码如下:public class MyGestureLintener extends SimpleOnGestureListener {private Cpublic MyGestureLintener(Context context) {
this.context =}
// 单击,触摸屏按下时立刻触发/*@Overridepublic boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
Toast.makeText(context, "Down " + e.getAction(), Toast.LENGTH_SHORT)
.show();}*/// 双击,手指在触摸屏上迅速点击第二下时触发@Overridepublic boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated me...... &&&&
自定义控件的步骤:
1 View的工作原理2 编写View类3 为View类增加属性4 绘制屏幕5 响应用户消息6 自定义回调函数
代码如下:private class MyText extends LinearLayout {
private TextView text1;
* private S
* public String getText() { }
* public void setText(String text) { this.text = }
public MyText(Context context) {
super(context);
// TODO Auto-generated constructor stub
L...... &&&&
代码如下:/*开机自动启动APP*/public class BootReceiver extends BroadcastReceiver {
@Overridepublic void onReceive(Context context, Intent intent) {Log.d("XRGPS", "BootReceiver.onReceive: " + intent.getAction());if (ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent mBootIntent = new Intent(context, MainActivity.class);
mBootIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mBootIntent);
Log.w("XRGPS", "BootReceiver: unsupported action");
......&nbsp最新技术文章: &&&&
本文所述实例源自一个项目开发中的登录验证功能,具体的要求就是,在Android端输入用户名和密码,在服务器端验证MySQL数据库中是否有此用户,实现之前当然首要的是,如何使Android端的数据发送到服务器端,具体的实现方法如下:
服务器端:ManageServlet.java代码如下:
public class ManageServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String password...... &&&&
本文所述,继续上一篇关于Android端向服务器端发送数据的方法进一步完善注册登录的方法,由于版本问题出现一点瑕疵,今天经过调试已经解决,在这里给大家介绍一下。
在Android4.0以后版本的对于网络权限要求变得严格,致使上一篇所述的案例无法将数据发送到服务器端,当你一点击发送数据,Android控制台就会报错,错误当然是很让人头疼,基本上都是关于http的错误,所以可以肯定是Android虚拟机向服务器发送数据时出现了错误,经过一番检查与测试后才知道,4.0之后的版本,主线程中不允许调用网络,如果你需要的话,应该另起一个线程处理网络连接Th...... &&&&
本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值。分享给大家供大家参考之用。具体方法如下:
主要功能代码如下:
* 获取SIM卡运营商
* @param context
public static String getOperators(Context context) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
String operator =
String IMSI = tm.getSubscriberId();
if (IMSI == null || IMSI.equals("")) {
if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
operator = "中国移动";
} else if (IMSI.startsWith("4......&nbsp
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
(C)2012-,站长邮箱:www_169it_(请将#改为@)android通过gps获取定位的位置数据和gps经纬度 _小组_ThinkSAAS
android通过gps获取定位的位置数据和gps经纬度
android通过gps获取定位的位置数据和gps经纬度
代码如下:package com.action.android_import android.location.Limport android.location.LocationLimport android.location.LocationMimport android.os.Bimport android.app.Aimport android.view.Mimport android.widget.TextVpublic class MainActivity extends Activity {private Location location=@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获得位置服务的名称String serviceName = this.LOCATION_SERVICE;//获得位置服务的管理对象LocationManager locationManager = (LocationManager)getSystemService(serviceName);// 通过GPS获取定位的位置数据location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);updateToNewLocation(location);
/**服务管理对象的监听器*/
//参数1:定位的方式
参数2:监听更新间隔时间(ms)
参数3:监听更新的距离(m) 参数4:监听的方法
locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 2000, 10, new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
public void onProviderEnabled(String provider) {
public void onProviderDisabled(String provider) {
public void onLocationChanged(Location location) {
updateToNewLocation(location);
});}private void updateToNewLocation(Location location) {
TextView tv1;
tv1 = (TextView) this.findViewById(R.id.tv1);
if (location != null) {
latitude = location.getLatitude();
double longitude= location.getLongitude();
tv1.setText("经纬度为:n"+"维度:" +
latitude+ "n经度" + longitude);
tv1.setText("无法获取地理信息");
}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);}
用户评论(0)
开发技术学习小组列表
PHP开发框架
缓存Memcache
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
让ThinkSAAS更好,把建议拿来。
iphone扫码下载客户端如何用手机获取精确经纬度_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
如何用手机获取精确经纬度
用​手​机​获​取​精​确​经​纬​度​,​很​实​用​,​很​好​用
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:3.71MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢知道经度纬度怎么去寻找该位置?用gps导航吗? ps:出租车gps显示的经度纬度精准吗?_百度知道
知道经度纬度怎么去寻找该位置?用gps导航吗? ps:出租车gps显示的经度纬度精准吗?
提问者采纳
gps的经纬度是准确的。可以用gps导航
其他类似问题
您可能关注的推广
gps导航的相关知识
按默认排序
其他1条回答
民用的都差不多,在地球仪上东西是经度,南北是纬度
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 iphone6车载充电器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信