大作业(一)

 AirMap自动定位器

功能需求及技术可行性分析

   1.功能需求

通过对地图软件功能的整理,我认为AirMap中至少应该具备以下功能:

1. 可以确定出全国所有的省、市、县及街道的具体位置。

2. 可以查看自身所在的具体位置。

3. 可以自由地在地图选点确定其位置。

4. 提供手动放大缩小地图的功能。

5. 可以根据地图放大比例显示周围的重要街道及标志物。

   2.可行性分析:

以上功能通过课上学习跟课后的网上搜索可以完美的实现预期功能

比如要想实现定位功能可以引用百度地图的定位功能通过在百度网站申请AppKey可以将已经成型的定位功能添加到本程序中,并通过以下网址申请:

    http://lbsyun.baidu.com/apiconsole/key

二 配置环境

  1. 获取APPKEY

     创建应用地址:http://lbsyun.baidu.com/apiconsole/key


2.创建应用

 

 3.获取SHA1值,首先cmd打开dos窗口

 

4.cd .android 切换到 .android目录


5.使用keytool -list -v -keystore debug.keystore获取指纹整数中 的SHA1值,输入口令直接回车或者输入android即可:

 

6.得到的指纹整数SHA1


7.获取应用的包名(PackageName)。

8.SHA1PackageName放到对应的位置点击确定,得到APPKEY

 

  环境配置完成!

三 配置AndroidManifest.xml文件

 

<manifest    xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.example.positiontestforbaidu2"
         android:versionCode="1"
         android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="15" />
<supports-screens android:largeScreens="true"
    android:normalScreens="false" android:smallScreens="true"
    android:resizeable="true" android:anyDensity="true"/>
<application
        android:name=".MyApplication"
        android:icon="@drawable/tou"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
     <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
          <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>


1.添加用户权限

</application>
 <!-- 使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></permission>
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCES_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_GPS" />
</manifest>


四 基础地图实现


1.修改布局文件
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >
    <TextView 
        android:id="@+id/showAddr"
          android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="选择地点"
        android:textSize="20dp"
        />   
<com.example.util.MyMapView
        android:id="@+id/bmapsView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />    
</LinearLayout>

2.初始化地图控件
package com.example.positiontestforbaidu2;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.WindowManager.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.BDNotifyListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationOverlay;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import com.example.util.MyMapView;
public class MainActivity extends Activity {
	public MyApplication app;
	static MyMapView mMapView = null;
	public MKMapViewListener mMapListener = null;
	MyLocationOverlay myLocationOverlay = null;
	// 
	LocationClient mLocClient;
	public NotifyLister mNotifyer = null;
	public MyLocationListenner myListener = new MyLocationListenner();
	LocationData locData = null;
	private MapController mMapController = null;
	static MKSearch mkSerach;
	Handler mHandler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			Toast.makeText(MainActivity.this, "msg:" + msg.what,
					Toast.LENGTH_SHORT).show();
		};
	};
	static TextView showAddr;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		showAddr = (TextView) findViewById(R.id.showAddr);
		MyIcon mi = new MyIcon(this);
		//
		getWindow().addContentView(
				mi,
				new LayoutParams(LayoutParams.FILL_PARENT,
						LayoutParams.FILL_PARENT));
		MyIcon2 m2 = new MyIcon2(this);
		getWindow().addContentView(
				m2,
				new LayoutParams(LayoutParams.FILL_PARENT,
						LayoutParams.FILL_PARENT));
		mMapView = (MyMapView) findViewById(R.id.bmapsView);
		mMapController = mMapView.getController();
		initMapView();
		app = MyApplication.getInstance();
		mLocClient = new LocationClient(this);
		mLocClient.registerLocationListener(myListener);
		//
		mkSerach = new MKSearch();
		mkSerach.init(app.mBMapManager, new MKSearchListener() {
			@Override
			public void onGetWalkingRouteResult(MKWalkingRouteResult arg0,
					int arg1) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onGetTransitRouteResult(MKTransitRouteResult arg0,
					int arg1) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onGetPoiDetailSearchResult(int arg0, int arg1) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onGetDrivingRouteResult(MKDrivingRouteResult arg0,
					int arg1) {
				// TODO Auto-generated method stub

			}
			@Override
			public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
				// TODO Auto-generated method stub
			}
			@Override
			public void onGetAddrResult(MKAddrInfo info, int arg1) {
				showAddr.setText(info.strAddr);
			}
		});
		//
		LocationClientOption option = new LocationClientOption();
		option.setOpenGps(true);
		option.setCoorType("bd09ll");
		option.setScanSpan(300000);
		mLocClient.setLocOption(option);
		mLocClient.start();
		mMapView.getController().setZoom(16);
		mMapView.getController().enableClick(true);
		mMapView.displayZoomControls(true);
		mMapListener = new MKMapViewListener() {
			public void onMapMoveFinish() {
			}
			public void onClickMapPoi(MapPoi mapPoiInfo) {
				// TODO Auto-generated method stub
				String title = "";
				if (mapPoiInfo != null) {
					title = mapPoiInfo.strText;
					Toast.makeText(MainActivity.this, title, Toast.LENGTH_SHORT)
							.show();
				}
			}
		};
		mMapView.regMapViewListener(MyApplication.getInstance().mBMapManager,
				mMapListener);
		myLocationOverlay = new MyLocationOverlay(mMapView);
		locData = new LocationData();
		myLocationOverlay.setData(locData);
		mMapView.getOverlays().add(myLocationOverlay);
		myLocationOverlay.enableCompass();
		mMapView.refresh();
	}
	private void initMapView() {
		mMapView.setLongClickable(true);		
	}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值