(android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图

(android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图

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);

下面是完整的实现代码:

界面代码:

<?xml version="1.0" encoding="utf-8"?><LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent">

   <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"                 />

</LinearLayout>

后台代码:

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 stubreturnfalse;    }

    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");             }     };

}
时间: 2024-08-28 09:53:55

(android 地图实战开发)2 创建MapActivity,根据设备当前位置,显示地图的相关文章

android wear开发之:创建可穿戴设备应用 - Creating Wearable Apps

注:本文内容来自:https://developer.android.com/training/wearables/apps/index.html 翻译水平有限,如有疏漏,欢迎批评指教. 译:山人 创建可穿戴设备应用 Creating Wearable Apps Wearable apps run directly on the device, giving you access to hardware such as sensors and the GPU. They are fundamen

Javascript实战开发:教你使用raphael.js绘制中国地图

最近的数据统计项目中要用到中国地图,也就是在地图上动态的显示某个时间段某个省份地区的统计数据,我们不需要flash,仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作.在本文中,我给大家分享如何使用js来完成地图交互. 先简单介绍下raphael.js,raphael.js是一个很小的javascript库,它可以在网页中实现绘制各种矢量图.各类图表.以及图像裁剪.旋转.运动动画等等功能.此外raphael.js还跨浏览器兼容,而且还兼容老掉牙的IE6啊.raphael.js的官

百度地图根据位置显示地图

mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); LatLng ll = new LatLng(36.000000,120.000000); MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(u);

Android 利用代码在屏幕中间位置显示ProgressDialog和ProgressBar

package cc.testprogressdialog; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.P

React Native Android原生模块开发实战|教程|心得|如何创建React Native Android原生模块

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 前言 一直想写一下我在React Native原生模块封装方面的一些经验和心得,来分享给大家,但实在抽不开身,今天看了一下日历发现马上就春节了,所以就赶在春节之前将这篇博文写好并发布(其实是两篇:要看iOS篇的点这里<React Native iOS原生模块开发>). 我平时在用React Native开发App时会

React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块

尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息.为大家精心准备的React Native视频教程公布了,大家现能够看视频学React Native了. 前言 一直想写一下我在React Native原生模块封装方面的一些经验和心得.来分享给大家,但实在抽不开身.今天看了一下日历发现立即就春节了.所以就赶在春节之前将这篇博文写好并公布(事实上是两篇

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

ym——android源码大放送(实战开发必备)

文件夹 PATH 列表 卷序列号为 000A-8F50 E:. │  javaapk.com文件列表生成工具.bat │  使用说明.txt │  免费下载更多源码.url │  目录列表.txt │ ├─android web应用 │      jqmDemo_static.zip │      jqmMobileDemo-master.zip │      jqmMobileDemo1_1-master.zip │      Location1014.rar │ ├─anko │      

android 基于百度地图api开发定位以及获取详细地址

一:百度地图开发必须要到百度开发平台android开发api下载相应的库,已经申请百度地图开发key. 二:新建项目baidumaplocation.设计main.xml文件这里注意的是MapView控件必须使用来自百度库封装好的com.baidu.mapapi.MapView .设计代码如下: Xml代码   <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&q