对于常常出外的人来说来到一个陌生的地方对于地点的不熟悉时常迷路那么就需要借助于一些地图软件来对自己当前的位置进行定位或者查看周边的设施和一些交通 信息,那么当前对于位置的服务通常有二种模式,其一是基于手机原有的GPS导航设备通常安装第三方软件进行位置的导航,对于这种而言的好处是基于卫星导航 相对于第二种而言不用再次消耗手机的流量两者可能相对来说导航的误差相对而言会小很多,第二种是基于基站的定位,通过像谷歌与百度都有提供API开发者只 要通过相应的公司提供的API进行开发就可以,此文采用的是谷歌的MAPS进行相应的开发。
Android 地图 API 密钥
在进行MD5的查询前必须知道debug.keystore的位置。
步骤:
打开eclipse 选择 Windowsg下的Preferences选项,单击android选项左边的前头打开选择Bulid下面的地址debug.keystore地址
然后打开一个DOS窗口输入keytool -list -keystore “d:\android\.android\debug.keystore” -storepass android -keypass android
但是有时候可能出现下面的错误
错误一:
解决方案:对系统环境中的PATH设置成你jdk安装的目录下的bin目录,用户调用keytool的功能在jdk中包含所以要对path进行设置让用户进行调用
错误二:有时候用户使用eclipse的密钥文件过期或者丢失会出现下图的错误
如果是过期的话那么你先查找到密钥的位置进行删除,删除完成后在eclipse中左击项目在弹出的菜单中选择Android toolsg下的Export Android Application选项用户会自动创建一个debug.keypass的文件,如果是未查找到密钥的话就不用删除直接跳到第二步
密码三:
通过上述的操作可能生成的是一个20位的密钥用户进行申请的时候出现下图的错误。
解决方案:如果出现这种错误的话那么用户只要在keytool -list -keystore “d:\android\.android\debug.keystore” -storepass android -keypass android基础上在后面加上一个-v那么就可以解决然后复制里面的MD5.
那么通过上述用户已经正确的得到的MD5那么用户打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html这个网站在下列的文本中输入获取到的MD5点击获取按钮
出现下图表示已经成功申请的密钥
项目创建:
一、那么用户在开发地图软件前需要先创建一个项目
在Bulid Target选择google APis
然后在AndroidManifest.xml添加如下的权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET" />
在application列中添加<uses-library android:name="com.google.android.maps" />
最后如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ditu"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="6" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".DituActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
二、在用户的main.xml进行界面的编辑把申请成功的页面下的这些代码复制进main布局文件中
最终main.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.google.android.maps.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="0jBkhv-X0NiZdNyTIVdmTHAkMPv**i8ydjI1*rg"
/>
</LinearLayout>
三、在源文件下输入以下的代码
package com.ditu;
//下列是用户需要导入的包
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.os.Bundle;
//用户需要让自己的类继承MapActivity
public class DituActivity extends MapActivity {
private MapView mapView;
private MapController mapController;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.map);
mapView.setBuiltInZoomControls(true);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}