第一步:建一个包含Google APIs的工程
第二步:获取Android Maps API 金钥
第三步:载入MapView
第四步:通过MapController控制地图缩放与移动
获取密钥的方法:
第一步:C:\Users\Jet>keytool -list -alias androiddebugkey -keystore "C:\Users\Jet\.android\debug.keystore" -storepass android -keypass android
红字部分是keystore的具体路径,此处修改成自己电脑上keystore的真实路径即可
执行命令后,会得到MD5认证指纹
第二步:打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html,在页面最下部有一处输入认证指纹得到密钥的地方。将你得到的MD5指纹输入,提交即可得到密钥。(上面这个网址貌似需要之后才能正常打开,否则输入指纹的地方显示不出来)
密钥格式:0QB6Bk20bHSaAJIZN******3upyNFLK_tujWTBw
注意:
1)不要把经度和纬度搞混,否则影响正常显示
2)在manifest.xml的<application>标签中加这一句<uses-library android:name="com.google.android.maps"/>
public class LLAddressActivity extends MapActivity {
private MapController mMapController;
private MapView mapView;
private Button button1, button2, button3;
private EditText longet, latiet;
private int zoomLevel = 0;
private double dLati = 25.0402555;
private double dLong = 121.512377;
private String longitude = "";
private String latitude = "";
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.lladdress);
//find components
mapView = (MapView) findViewById(R.id.address_mapview);
button1 = (Button) findViewById(R.id.address_search);
button2 = (Button) findViewById(R.id.address_plus);
button3 = (Button) findViewById(R.id.address_minus);
longet = (EditText) findViewById(R.id.longtitude_et);
latiet = (EditText) findViewById(R.id.latitude_et);
mMapController = mapView.getController();
// 设置MapView的显示选项
mapView.setSatellite(true);
//默认的放大层级
zoomLevel = 17;
mMapController.setZoom(zoomLevel);
refreshMapView();
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
longitude = longet.getText().toString();
latitude = latiet.getText().toString();
dLong = Double.parseDouble(longitude);
dLati = Double.parseDouble(latitude);
refreshMapView();
Log.e("MAP", "latitude:" + dLati + "logitude" + longitude);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
zoomLevel++;
if (zoomLevel > mapView.getMaxZoomLevel()) {
zoomLevel = mapView.getMaxZoomLevel();
}
mMapController.setZoom(zoomLevel);
}
});
button3.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
zoomLevel--;
if (zoomLevel < 1) {
zoomLevel = 1;
}
mMapController.setZoom(zoomLevel);
}
});
}
/**
* 重整Map的Method
*/
private void refreshMapView() {
GeoPoint p = new GeoPoint((int) (dLati * 1E6), (int) (dLong * 1E6));
mapView.displayZoomControls(true);
/* 将Map的中点移动GeoPoint */
mMapController.animateTo(p);
mMapController.setZoom(zoomLevel);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
布局文件中使用这样一段来显示地图
<com.google.android.maps.MapView
android:id="@+id/address_mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0QB6Bk20b**********upyNFLK_tujWTBw" />