android简单定位和画地图

在讲解代码前,首先配置AndroidManifest.xml

以下权限貌似是缺一不可哦:

   <!-- 访问网络,网络定位需要上网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 这个权限用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 这个权限用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <!-- 用于读取手机当前的状态 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 修改删除launcher.db内容权限: -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>

接着添加:

     <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
            <intent-filter>
                <action android:name="com.baidu.location.service_v2.2" />
            </intent-filter>
        </service>
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="ersHTSRLiYb2TRMTcdi3zv23"/>
注意:<intent-filter> 2.2以上的版本已经支持,可以不写;API_KEY需要到百度地图LBS开发平台的API控制台创建应用获得

同时还需要下载BaiduLBS_AndroidSDK_Lib.zip,解压后将libs下的所有文件添加到自己工程下的libs里这样配置工作已经做好了,下面的是activity里的代码:
 1 package com.ghp.practice6_dingwei;
 2
 3 import com.baidu.location.BDLocation;
 4 import com.baidu.location.BDLocationListener;
 5 import com.baidu.location.LocationClient;
 6 import com.baidu.location.LocationClientOption;
 7 import com.baidu.location.LocationClientOption.LocationMode;
 8 import com.baidu.nplatform.comapi.map.OverlayItem.CoordType;
 9
10 import android.app.Activity;
11 import android.content.Intent;
12 import android.os.Bundle;
13 import android.view.Menu;
14 import android.view.MenuItem;
15 import android.view.View;
16 import android.view.View.OnClickListener;
17 import android.widget.Button;
18 import android.widget.TextView;
19
20 public class MainActivity extends Activity implements OnClickListener,BDLocationListener {
21     TextView adress;
22     Button get_adress;
23     private LocationClient locationClient;
24     TextView mapview;
25     @Override
26     protected void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         setContentView(R.layout.activity_main);
29
30         locationClient=new LocationClient(getApplicationContext());
31         locationClient.registerLocationListener(this);
32         initLocation();
33         initView();
34     }
35
36     public void initLocation() {
37         LocationClientOption option=new LocationClientOption();
38         option.setIsNeedAddress(true);//不设置地址会为null
39         option.setLocationMode(LocationMode.Hight_Accuracy);//定位模式
40         option.setTimeOut(3000);
41         option.setCoorType("gcj02");//坐标系
42         locationClient.setLocOption(option);
43     }
44     public void initView() {
45         adress=(TextView) findViewById(R.id.adress);
46         get_adress=(Button) findViewById(R.id.get_adress);
47         get_adress.setOnClickListener(this);
48         mapview=(TextView) findViewById(R.id.mapview);
49         mapview.setOnClickListener(this);
50     }
51     @Override
52     public void onClick(View v) {
53         // TODO Auto-generated method stub
54         switch (v.getId()) {
55         case R.id.get_adress:
56             locationClient.start();
57             break;
58         case R.id.mapview:
59             Intent intent=new Intent(this,MapViewActivity.class);
60             startActivity(intent);
61             finish();
62             break;
63
64         default:
65             break;
66         }
67
68     }
69     @Override
70     public void onReceiveLocation(BDLocation location) {
71         // TODO Auto-generated method stub
72         StringBuffer sb=new StringBuffer();
73         double latitude=location.getLatitude();
74         double longitude=location.getLongitude();
75         String addr=location.getAddrStr();
76         String city=location.getCity();
77         String street=location.getStreet();
78         String district=location.getDistrict();
79         String province=location.getProvince();
80         String streetNumber=location.getStreetNumber();
81         int errorCode=location.getLocType();
82         sb.append("经度:"+latitude);
83         sb.append("纬度:"+longitude);
84         sb.append("地址:"+addr);
85         sb.append("errorCode:"+errorCode);
86         //单独查看
87         sb.append("\n省份:"+province);
88         sb.append("\n城市:"+city);
89         sb.append("\n区:"+district);
90         sb.append("\n街道:"+street);
91         sb.append("\n街道号:"+streetNumber);
92         adress.setText(sb.toString());
93     }
94 }

展示地图MapViewActivity:

 1 package com.ghp.practice6_dingwei;
 2
 3 import com.baidu.mapapi.SDKInitializer;
 4 import com.baidu.mapapi.map.BaiduMapOptions;
 5 import com.baidu.mapapi.map.MapStatus;
 6 import com.baidu.mapapi.map.MapView;
 7 import com.baidu.mapapi.model.LatLng;
 8
 9 import android.app.Activity;
10 import android.os.Bundle;
11 import android.view.Menu;
12 import android.view.MenuItem;
13
14 public class MapViewActivity extends Activity {
15     private MapView mapView;
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         //setContentView(R.layout.activity_map_view);
20         SDKInitializer.initialize(super.getApplicationContext());
21         double x=37;
22         double y=121;
23         LatLng latlng=new LatLng(x, y);
24         MapStatus status=new MapStatus.Builder().target(latlng).zoom(13).build();
25         BaiduMapOptions options=new BaiduMapOptions();
26         options.mapStatus(status);//状态设置
27         options.zoomControlsEnabled(true);//缩放
28         mapView=new MapView(this,options);
29         setContentView(mapView);//加载view
30     }
31
32     @Override
33     protected void onDestroy() {
34         // TODO Auto-generated method stub
35         super.onDestroy();
36         mapView.onDestroy();
37     }
38
39     @Override
40     protected void onPause() {
41         // TODO Auto-generated method stub
42         super.onPause();
43         mapView.onPause();
44     }
45
46 }

布局文件:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     tools:context="${relativePackage}.${activityClass}" >
 6
 7    <com.baidu.mapapi.map.MapView
 8         android:id="@+id/mapview"
 9         android:layout_width="match_parent"
10         android:layout_height="match_parent">
11     </com.baidu.mapapi.map.MapView>
12
13 </RelativeLayout>
时间: 2024-08-09 10:37:37

android简单定位和画地图的相关文章

Arcgis for Android解决定位结果与地图偏移的简单处理思维

在进行Arcgis for Android的开发时,遇到过这样的问题:Arcgis Online上的地图资源与GPS定位结果不能够匹配,如下图所示: 这个效果可不是我们所需要的,所以必须对地图或者GPS信号做纠正,但是如果你用的是Arcgis Online上的地图资源的话,地图这一块你是无法做解析的,只能从GPS信号着手. 首先,我调用的Arcgis Online上的地图资源的url为http://cache1.arcgisonline.cn/ArcGIS/rest/services/China

Android 室内定位系列:&lt;1&gt;地图构建

Path类可以预先在View上将N个点连成一条"路径",然后调用Canvas的drawPath(path,paint)即可沿着路径绘制图形 Android还为路径绘制提供了PathEffect来定义绘制效果,PathEffect包含如下子类 ComposePathEffect CornerPathEffect DashPathEffect DiscretePathEffect PathDashPathEffect SumPathEffect 下面的示例将会逐一使用上面的绘制效果 [ja

Android应用中使用百度地图API定位自己的位置(二)

官方文档:http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3 百度地图SDK为开发者们提供了如下类型的地图覆盖物: 我的位置图层(MyLocationOverlay):用于显示用户当前位置的图层(支持自定义位置图标): Poi搜索结果图层(PoiOverlay):用于显示兴趣点搜索结果的图层: 路线图层(RouteOverlay):公交.步行和驾车线路图层,将公交.步行和驾车出行方案的路线及关键点显示在地图上(起.终

Android中级篇之百度地图SDK v3.5.0-一步一步带你仿各大主流APP地图定位移动选址功能

定位+移动选址 百学须先立志-学前须知: 我们经常在各大主流APP上要求被写上地址,如百度外卖.爱鲜蜂收货地址等等:其中他们大多数是可以让我们在地图上移动选址.就如下面这段GIF演示的一样: 尽信书,不如无书-能学到什么? 1.地图状态MapStatus类及监听setOnMapStatusChangeListener 2.定位LocationClient类 3.反地理编码GeoCoder类 工欲善其事必先利其器-申请Key 百度地图访问应用(AK)申请地址:http://lbsyun.baidu

Android应用中使用百度地图API并加入标注(一)

网上一些资料这样的的内容已经过时了,这里是最新的内容,假设哪里不正确,请吐槽... 1)下载百度地图移动版API(Android)开发包      要在Android应用中使用百度地图API,就须要在project中引用百度地图API开发包,这个开发包包括两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:比如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77

iOS开发 定位服务与地图

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iO

使用R画地图数据

用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf.bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下. 用R绘制地图比较简单.比如画一下全国范围的区域,可以用如下代码: library(maptools) mydat = readShapePoly("china-province-border-data.tar/china/bou2_4p.shp") #地图包位置,根据自己的角标位置设置

iOS定位服务与地图开发(1)---获取经纬度

定位服务是通过GPS等方式查找定位自己的位置的,再通过地图标注出来. 在iOS中定位服务和地图开发是使用两套API分别完成的. 1.定位服务: iOS系统提供3种不同定位途径: 1>WiFi定位:通过查询一个WiFi路由器的地理位置信息,iPhone.iPod Touch.iPad都可以采用. 2>蜂窝式移动电话基站定位:通过移动运营商基站定位 3>GPS卫星定位:通过3~4颗GPS卫星位置定位,最为准确,但是耗电量大 iOS不像Android系统在定位服务编程时可以指定采用哪种途径进行

Android 百度定位获得当前具体位置

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口. 可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问百度地图服务和数据,构建功能丰富.交互性强的地图类应用程序. Android项目截图注意libs的文件名都是固定的,否则会报错. 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm