博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图
阅读量:6681 次
发布时间:2019-06-25

本文共 4458 字,大约阅读时间需要 14 分钟。

 http://www.cnblogs.com/macroxu-1982/archive/2011/09/13/2174657.html

实现效果:

 

获取手机gps当前的位置,显示位置对于的google地图.

 

 

 

 

具体的步骤:

 

1 Step One  创建包含MapView控件的应用界面

 

  <com.google.android.maps.MapView

 

                 android:layout_width="fill_parent"

 

                 android:layout_height="fill_parent"

 

                 android:id="@+id/map_view"

 

                 android:clickable="true"

 

                 android:apiKey="0zoMLU7jtw20HSV-bpo6p81D6rFEvGwMz2BJqiw"

 

                 />

 

在这里主要有两个属性 clickable是否允许点击,true ,将捕获点击事件,并作出基于位置的响应.

 

apiKey :注册并允许基于地图开发的key,具体如何获得apikey 看上一篇

 

开发环境下配置google地图功能步骤

 

 

 

2 Step Two 初始化MapView

 

MapView map_view =(MapView)findViewById(R.id.map_view);

 

        map_view.setStreetView(true);

 

        map_view.setTraffic(true);

 

        map_view.setBuiltInZoomControls(true);

 

        map_view.setSatellite(false); 

 

     

 

主要几个方法说明:

 

  setStreetView (true) 是否显示街道信息

 

setTraffic(true) 是否显示交通信息

 

setSatellite(false)是否显示卫星图,如True显示卫星图,false 显示地图

 

 

 

3 Step Three 获取终端GPS位置

 

l  获取服务位置服务

 

       String context=Context.LOCATION_SERVICE;

 

locationManager=(LocationManager)getSystemService(context);

 

  String provider=LocationManager.GPS_PROVIDER;

 

 

 

l  获取当前地理位置

 

1         获取定位服务的最后一次定位信息

 

location =locationManager.getLastKnownLocation(provider);

 

2         更新当前的定位信息

 

locationManager.requestLocationUpdates(provider, 0, 0, locationListener );

 

 

 

4 Step Four 显示定位下的地图信息

 

        MapController mapcontroller=map_view.getController();

 

       

 

        GeoPoint point=getCurrentPoint();// 设置地图的当前位置信息

 

        mapcontroller.setCenter(point);

 

        mapcontroller.setZoom(20);

 

        mapcontroller.animateTo(point);

 

 

 

下面是完整的实现代码:

界面代码:

 
 

后台代码:

 
publicclass LocationMap extends MapActivity {
LocationManager locationManager; @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.locationmap); //设置地图control MapView map_view =(MapView)findViewById(R.id.map_view); map_view.setStreetView(true); map_view.setTraffic(true); map_view.setBuiltInZoomControls(true); map_view.setSatellite(false); MapController mapcontroller=map_view.getController(); GeoPoint point=getCurrentPoint();// 设置地图的当前位置信息 mapcontroller.setCenter(point); mapcontroller.setZoom(20); mapcontroller.animateTo(point); } @Override publicboolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
ViewUtility.NavigateActivate(LocationMap.this, Main.class); } returnfalse; } @Override protectedboolean isRouteDisplayed() {
// TODO Auto-generated method stub returnfalse; } private GeoPoint getCurrentPoint() {
String context=Context.LOCATION_SERVICE; locationManager=(LocationManager)getSystemService(context); String provider=LocationManager.GPS_PROVIDER; Location location =locationManager.getLastKnownLocation(provider); if(location ==null){ //没有最后位置,更新gps,获取当前位置 locationManager.requestLocationUpdates(provider, 0, 0, locationListener ); location =locationManager.getLastKnownLocation(provider); } GeoPoint point=null; if(location==null) {
Double lat=37.422006*1E6; //默认值 Double lng=-122.084095*1E6; point=new GeoPoint(lat.intValue(),lng.intValue()); } else//当前反馈的GPS位置 {
Double lat=location.getLatitude()*1E6; Double lng=location.getLongitude()*1E6; point=new GeoPoint(lat.intValue(),lng.intValue()); } return point; } //创建位置监听器 private LocationListener locationListener =new LocationListener(){
//位置发生改变时调用 @Override publicvoid onLocationChanged(Location location) {
Log.d("Location", "onLocationChanged"); } //provider失效时调用 @Override publicvoid onProviderDisabled(String provider) {
Log.d("Location", "onProviderDisabled"); } //provider启用时调用 @Override publicvoid onProviderEnabled(String provider) {
Log.d("Location", "onProviderEnabled"); } //状态改变时调用 @Override publicvoid onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Location", "onStatusChanged"); } }; }
 

 

 

转载于:https://www.cnblogs.com/gtgl/p/5026332.html

你可能感兴趣的文章
锁等待分析处理
查看>>
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
查看>>
傻瓜式操作Nagios
查看>>
被神话了的ERP系统
查看>>
Spring task配置,及解决加载两次的方法
查看>>
仿淘宝套餐选择插件 基于jQuery(原创)
查看>>
毫秒转时分秒
查看>>
思科模拟器Packet Tracer的使用
查看>>
tmux 指南
查看>>
酒店管理系统
查看>>
vSphere 4系列之十:Cluster配置
查看>>
eclipse + tomcat debug启动过慢(一)
查看>>
NGINX开机自动启动
查看>>
PHP设计模式之构造器(Builder)
查看>>
2014年140个最好的jQuery插件集合
查看>>
资产-服务器变更流程图
查看>>
【Think社区】2013 PHP 技术峰会即将在上海举行
查看>>
Nginx常用Rewrite(伪静态)
查看>>
ubuntu端口 扫描和开启
查看>>
linux文件特殊权限及文件的访问控制列表
查看>>