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>

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。