百度地图SDK for Android【Demo点击屏幕获取地理坐标】

本文介绍如何通过手指点击屏幕获取所点击点的地理坐标,并提供了实现步骤,包括集成MapView、重写onTouchEvent方法、添加自定义MapView、初始化BMapManager等关键步骤。

http://blog.csdn.net/baidulbs/article/details/8646847

通过手指点击屏幕从而获取所点击点的地理坐标是一个在实际应用中较为常见的功能。下面,我将为大家介绍如何实现此功能。

        基本原理:通过点击获取屏幕坐标,利用坐标转换的接口,把屏幕坐标转换为地理坐标。

        有了以上的基本原理,我们就可以去具体实现了,步骤如下:

        第一步,集成MapView,重写onTouchEvent方法。代码如下:

[java]  view plain copy
  1. public class MyMapView extends MapView {  
  2.   
  3.     public MyMapView(Context context)  
  4.     {  
  5.         super(context);  
  6.     }  
  7.       
  8.     public MyMapView(Context context, AttributeSet set)  
  9.     {  
  10.         super(context, set);  
  11.     }  
  12.       
  13.     public MyMapView(Context context, AttributeSet set, int i)  
  14.     {  
  15.         super(context, set, i);  
  16.     }  
  17.       
  18.     @Override  
  19.     public boolean onTouchEvent(MotionEvent arg0) {  
  20.         // TODO Auto-generated method stub  
  21.         int x = (int)arg0.getX();  
  22.         int y = (int)arg0.getY();  
  23.         GeoPoint geoPoint = this.getProjection().fromPixels(x, y);  
  24.         int xx = geoPoint.getLongitudeE6();  
  25.         int yy = geoPoint.getLatitudeE6();  
  26.         Log.d("xxxxxxxxxxx", Integer.toString(xx));  
  27.         Log.d("yyyyyyyyyyy", Integer.toString(yy));  
  28.         return super.onTouchEvent(arg0);  
  29.     }  
  30. }  

        第二步,在布局文件中添加上一步自己定义的MapView。代码如下:

[html]  view plain copy
  1. <com.baidumap.basemap.MyMapView  
  2.         android:id="@+id/bmapsView"  
  3.         android:layout_width="fill_parent"  
  4.         android:layout_height="fill_parent"  
  5.         android:layout_below="@+id/button1"  
  6.         android:clickable="true" />  

        第三步,在主类中定义并初始化MyMapView对象,运行程序,点击屏幕就可以获取点击点的地理坐标了。

 

注意事项:

        1 在自定义并继承MapView的时候需要注意几个几个构造方法,特别是public MyMapView(Context context, AttributeSet set),一定要有,不然会报错。

        2 布局文件添加的MapView不再是我们百度为大家提供的MapView,应该添加自定义的那个MyMapView(否则有什么意义呢?)。

        3 在使用setContentView方法之前一定要先初始化BMapManager,否则会报错,这个在官方开发指南及本博客的相关章节都有强调,可是还有很多不细心的开发者犯这个小错误。

 

        最后希望通过我们大家共同的努力使百度地图SDK越来越好!



更多详细信息请登录百度地图API官方网站:http://developer.baidu.com/map/
百度地图API论坛:http://bbs.lbsyun.baidu.com/


android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位 最简单的手机定位方式当然是通过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更快,准确度略高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值