Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 百度地圖可視化定位效果,可以輸入目的地定位。,可視化目的地

百度地圖可視化定位效果,可以輸入目的地定位。,可視化目的地

編輯:關於android開發

百度地圖可視化定位效果,可以輸入目的地定位。,可視化目的地


登錄百度開發者帳號後下載sdk導入自己的工程中。

代碼如下:

  1 package com.lixu.baidu_gps;
  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.mapapi.SDKInitializer;
  8 import com.baidu.mapapi.map.BaiduMap;
  9 import com.baidu.mapapi.map.MapStatusUpdate;
 10 import com.baidu.mapapi.map.MapStatusUpdateFactory;
 11 import com.baidu.mapapi.map.MapView;
 12 import com.baidu.mapapi.map.MyLocationData;
 13 import com.baidu.mapapi.model.LatLng;
 14 import com.baidu.mapapi.search.geocode.GeoCodeOption;
 15 import com.baidu.mapapi.search.geocode.GeoCodeResult;
 16 import com.baidu.mapapi.search.geocode.GeoCoder;
 17 import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
 18 import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
 19 import android.app.Activity;
 20 import android.os.Bundle;
 21 import android.view.View;
 22 import android.view.View.OnClickListener;
 23 import android.widget.Button;
 24 import android.widget.EditText;
 25 import android.widget.Toast;
 26 
 27 public class MainActivity extends Activity {
 28     private LocationClient mLocationClient = null;
 29     private BaiduMap mBaiduMap = null;
 30     private GeoCoder geocoder;
 31     private EditText et1, et2;
 32 
 33     @Override
 34     protected void onCreate(Bundle savedInstanceState) {
 35         super.onCreate(savedInstanceState);
 36 
 37         SDKInitializer.initialize(getApplicationContext());
 38 
 39         setContentView(R.layout.activity_main);
 40 
 41         mLocationClient = new LocationClient(this);
 42         // 獲取百度地圖的視圖控件
 43         MapView baidumapview = (MapView) findViewById(R.id.baidumv);
 44 
 45         mBaiduMap = baidumapview.getMap();
 46         // 設置地圖指針
 47         mBaiduMap.setMyLocationEnabled(true);
 48 
 49         // 處理百度地圖開源項目的定位偏差
 50         LocationClientOption option = new LocationClientOption();
 51         option.setCoorType("bd09ll");
 52 
 53         mLocationClient.setLocOption(option);
 54 
 55         MyLocationListenner myListenner = new MyLocationListenner();
 56         mLocationClient.registerLocationListener(myListenner);
 57         mLocationClient.start();
 58 
 59         geocoder = GeoCoder.newInstance();
 60 
 61         geocoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
 62 
 63             @Override
 64             public void onGetReverseGeoCodeResult(ReverseGeoCodeResult location) {
 65             }
 66 
 67             @Override
 68             public void onGetGeoCodeResult(GeoCodeResult location) {
 69                 // 根據輸入地址來獲得經緯度
 70                 LatLng ll = location.getLocation();
 71                 // 獲取精度緯度完成定位
 72                 MyLocationData mMyLocationData = new MyLocationData.Builder().latitude(ll.latitude)
 73                         .longitude(ll.longitude).build();
 74 
 75                 // 設置定位球的位置
 76                 mBaiduMap.setMyLocationData(mMyLocationData);
 77                 // 移動定位球到中心位置
 78 
 79                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
 80                 mBaiduMap.animateMapStatus(msu);
 81 
 82             }
 83         });
 84 
 85         et1 = (EditText) findViewById(R.id.et1);
 86 
 87         et2 = (EditText) findViewById(R.id.et2);
 88 
 89         Button btn = (Button) findViewById(R.id.sousuo);
 90 
 91         btn.setOnClickListener(new OnClickListener() {
 92 
 93             @Override
 94             public void onClick(View v) {
 95                 if (et1.getText().toString().equals("") || et2.getText().toString().equals("")) {
 96                     Toast.makeText(getApplicationContext(), "請輸入地址", 0).show();
 97                 } else
 98                     geocoder.geocode(
 99                             new GeoCodeOption().city(et1.getText().toString()).address(et2.getText().toString()));
100 
101             }
102         });
103 
104     }
105 
106     private class MyLocationListenner implements BDLocationListener {
107 
108         @Override
109         public void onReceiveLocation(BDLocation location) {
110             // 獲取精度緯度完成定位
111             MyLocationData mMyLocationData = new MyLocationData.Builder().latitude(location.getLatitude())
112                     .longitude(location.getLongitude()).build();
113 
114             // 設置定位球的位置
115             mBaiduMap.setMyLocationData(mMyLocationData);
116             // 移動定位球到中心位置
117             LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
118             MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
119             mBaiduMap.animateMapStatus(msu);
120 
121         }
122 
123     }
124 
125     // 程序退出時關閉
126     @Override
127     protected void onDestroy() {
128         mLocationClient.stop();
129         mBaiduMap.clear();
130         geocoder.destroy();
131         super.onDestroy();
132     }
133 
134 }

 

xml文件和Mainfest文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.lixu.baidu_gps"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6 
 7     <uses-sdk
 8         android:minSdkVersion="19"
 9         android:targetSdkVersion="19" />
10 
11     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
12     </uses-permission>
13     <uses-permission android:name="android.permission.INTERNET" >
14     </uses-permission>
15     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
16     <uses-permission android:name="android.permission.WAKE_LOCK" >
17     </uses-permission>
18     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
19     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
20     <!-- SDK1.5需要android.permission.GET_TASKS權限判斷本程序是否為當前運行的應用? -->
21     <uses-permission android:name="android.permission.GET_TASKS" />
22     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
23     </uses-permission>
24     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
25     <!-- 這個權限用於進行網絡定位 -->
26     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
27     </uses-permission>
28     <!-- 這個權限用於訪問GPS定位 -->
29     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
30     </uses-permission>
31     <!-- 用於訪問wifi網絡信息,wifi信息會用於進行網絡定位 -->
32     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
33     </uses-permission>
34     <!-- 獲取運營商信息,用於支持提供運營商信息相關的接口 -->
35     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
36     </uses-permission>
37     <!-- 這個權限用於獲取wifi的獲取權限,wifi信息會用來進行網絡定位 -->
38     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
39     </uses-permission>
40     <!-- 用於讀取手機當前的狀態 -->
41     <uses-permission android:name="android.permission.READ_PHONE_STATE" >
42     </uses-permission>
43     <!-- 寫入擴展存儲,向擴展卡寫入數據,用於寫入離線定位數據 -->
44     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
45     </uses-permission>
46     <!-- 訪問網絡,網絡定位需要上網 -->
47     <uses-permission android:name="android.permission.INTERNET" />
48     <!-- SD卡讀取權限,用戶寫入離線定位數據 -->
49     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
50     </uses-permission>
51     <!-- 允許應用讀取低級別的系統日志文件 -->
52     <uses-permission android:name="android.permission.READ_LOGS" >
53     </uses-permission>
54 
55     <application
56         android:allowBackup="true"
57         android:icon="@drawable/ic_launcher"
58         android:label="@string/app_name"
59         android:theme="@style/AppTheme" >
60         <activity
61             android:name=".MainActivity"
62             android:label="@string/app_name" >
63             <intent-filter>
64                 <action android:name="android.intent.action.MAIN" />
65 
66                 <category android:name="android.intent.category.LAUNCHER" />
67             </intent-filter>
68         </activity>
69 
70         <meta-data
71             android:name="com.baidu.lbsapi.API_KEY"
72             android:value="TkWtCcaqum3XHoUSHwjHTVoA" />
73 
74         <service
75             android:name="com.baidu.location.f"
76             android:enabled="true"
77             android:process=":remote" >
78         </service>
79     </application>
80 
81 </manifest>

 

 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 
 6     <LinearLayout
 7         android:id="@+id/ll"
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:orientation="horizontal" >
11 
12         <EditText
13             android:id="@+id/et1"
14             android:layout_weight="1"
15             android:layout_width="wrap_content"
16             android:layout_height="wrap_content"
17             android:hint="請輸入城市名" />
18         <EditText
19             android:id="@+id/et2"
20             android:layout_weight="1"
21             android:layout_width="wrap_content"
22             android:layout_height="wrap_content"
23             android:hint="請輸入街道名" />
24 
25         <Button
26             android:id="@+id/sousuo"
27             android:layout_width="wrap_content"
28             android:layout_height="wrap_content"
29             android:text="搜索" />
30     </LinearLayout>
31 
32     <com.baidu.mapapi.map.MapView
33         android:id="@+id/baidumv"
34         android:layout_below="@id/ll"
35         android:layout_width="match_parent"
36         android:layout_height="match_parent" />
37 
38 </RelativeLayout>

運行效果圖:

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved