1.在 Android SDK & AVD Manager中 安装Google API 注意对应版本。
2.创建一个targetr为 Google API的 虚拟机。
3.创建工程 包选择Google API
4.获取自己的API Key方法如下:
获取MD5指纹认证。
cmd进入jdk安装目录的 bin文件夹下:
使用一下命令
keytool.exe -list -alias androiddebugkey -keystore C:\Users\ok\.android\debug.keystore -storepass android -keypass android
C:\Users\ok\.android\debug.keystore 对应自己路径修改
此时CMD界面会出现一串MD5码。将他复制到。
进入 http://code.google.com/android/maps-api-signup.html
将刚才的MD5黏贴 会生成API KEY。
复制他提供的代码,如:(id自己加)到工程目录下 /res/layout/main
<com.google.android.maps.MapView android:id="@+id/googleMap" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="0GoLUMN5YUZ6uGeNq_hczjW83mporK0z6RpUshg" />
同时要修改manifest.xml.授予权限 并且加上类库
<uses-permission android:name="android.permission.INTERNET"/>
<uses-library android:name="com.google.android.maps" />
5.编写一个测试程序:
所有的googlemap源代码 保存在com.google.android.maps.*
大概有这么几个类:
MapActivity:googleMap活动
MapView:界面
MapController:控制器 通过 mapView.getController(); 得到
GeoPoint:Map上的一点初始化时给予 经纬度。
Overlay:Map的标注
以下是代码.网上借鉴:
package my.googlemap; import java.util.ArrayList; import java.util.List; import com.google.android.maps.GeoPoint; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; import android.app.Activity; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.os.Bundle; public class googlemap extends MapActivity { private static final String API_KEY ="0GoLUMN5YUZ6uGeNq_hczjW83mporK0z6RpUshg"; MapView mapView ; 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.googleMap); //mapView.setTraffic(true); mapView.setSatellite(true); //mapView.setStreetView(true); mapView.setClickable(true); mapView.setEnabled(true); mapView.setBuiltInZoomControls(true); mapController = mapView.getController(); GeoPoint geoPoint = new GeoPoint( (int) (30.659259 * 1000000), (int) (104.065762 * 1000000)); mapController.animateTo(geoPoint); mapController.setZoom(10); Drawable d = Drawable.createFromPath("/sdcard/logo.gif"); WalmartLocations myLocationOverlay = new WalmartLocations(d); List<Overlay> list = mapView.getOverlays(); list.add(myLocationOverlay); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } public class WalmartLocations extends ItemizedOverlay { List<OverlayItem> items=new ArrayList<OverlayItem>();//保存要画的点 Drawable marker;//标注的图标 public WalmartLocations(Drawable marker) {//这里直接在构造函数里面初始化了,你可以修改 super(marker); this.marker=marker; GeoPoint wal1 = new GeoPoint((int)(30.3130000 * 1000000),(int)(120.3891700 * 1000000)); GeoPoint wal2=new GeoPoint((int)(30.3200000*1000000),(int)(120.3891700*1000000)); items.add(new OverlayItem(wal1,"test","test")); items.add(new OverlayItem(wal2, "test", "test")); this.populate();//这句很重要,画点 } //其他方法看看应该就知道什么用了 public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); this.boundCenterBottom(marker); } @Override protected OverlayItem createItem(int i) { return items.get(i); } @Override public int size() { return items.size(); } } }