http://vip.du8.com/books/sepc0xy.shtml#
在做android地图时要引用google APIs,同时还要申请API Key
申请android google map API key
转自:http://www.cnblogs.com/alex77lee/archive/2010/05/21/1789924.html
1.首先要得到你的debug keystore位置:
打开Eclipse--->Windows--->Preferences--->Android--->Build
查看默认的debug keystore位置,例如:C:\Documents and Settings\(你电脑的名字)\.android\debug.keystore
2.在cmd中执行: (可以先定位到jdk的bin目录下)
keytool -list -alias androiddebugkey -keystore " C:\Documents and Settings\MYNAME\.android\debug.keystore " -storepass android -keypass android
双引号中的为你keystore位置, (一定要有双引号),否则就会报错。
如果系统提示找不到keytool,需要将jdk中bin目录加入到环境变量中
执行结果:
androiddebugkey, 2009-10-04, PrivateKeyEntry,
指纹认证<MD5>: XX:XX:XX:XX:XX:XX:XX:XX.............
这里的XX:XX:XX:XX:XX:XX:XX:XX.............就是你的认证指纹
3.打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html
填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下:
感谢您注册 Android 地图 API 密钥!
您的密钥是:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
我IE打开的时候是乱码,不知道是不是自己电脑有问题。后来改用了chrome就正常显示了。
4.使用得到的apiKey:
在layout中加入MapView
搞定~
下面是主要代码(来自eoeandroid一位朋友的代码)
package com.wbtech.CurrentLocationWithMap;import java.util.List;import com.google.android.maps.GeoPoint;import com.google.android.maps.MapActivity;import com.google.android.maps.MapController;import com.google.android.maps.MapView;import com.google.android.maps.MyLocationOverlay;import com.google.android.maps.Overlay;//import com.wbtech.CurrentLocation.R;import android.app.Activity;import android.content.Context;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.TextView;import android.widget.ToggleButton;public class CurrentLocationWithMap extends MapActivity { protected Location location; MapView map; private MyLocationOverlay myLocation; MapController controller; MapController ctrlMap; Button inBtn; Button outBtn; ToggleButton switchMap; /** Called when the activity is first created. */ @Override protected boolean isRouteDisplayed(){ return false; } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager locationManager; String seviceName = Context.LOCATION_SERVICE; locationManager = (LocationManager)getSystemService(seviceName); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW); String provider = locationManager.getBestProvider(criteria,true); Location location = locationManager.getLastKnownLocation(provider); updateWithNewLocation(location); locationManager.requestLocationUpdates(provider, 2000, 10, locationListener); map = (MapView)findViewById(R.id.myMapView); List<Overlay>overlays = map.getOverlays(); myLocation = new MyLocationOverlay(this,map); controller = map.getController(); myLocation.enableMyLocation(); map.getOverlays().add(myLocation); ctrlMap = map.getController(); inBtn = (Button)findViewById(R.id.in); outBtn = (Button)findViewById(R.id.out); OnClickListener listener = new OnClickListener(){ public void onClick(View v){ switch (v.getId()){ case R.id.in: ctrlMap.zoomIn(); break; case R.id.out: ctrlMap.zoomOut(); default: break; } } }; inBtn.setOnClickListener(listener); outBtn.setOnClickListener(listener); switchMap = (ToggleButton)findViewById(R.id.switchMap); switchMap.setOnCheckedChangeListener(new OnCheckedChangeListener(){ public void onCheckedChanged(CompoundButton cBtn,boolean isChecked){ if (isChecked == true){ map.setSatellite(true); } else { map.setSatellite(false); map.setStreetView(true); } } }); } private final LocationListener locationListener = new LocationListener(){ public void onLocationChanged(String provider){ updateWithNewLocation(location); } public void onProviderDisabled(String provider){ updateWithNewLocation(null); } public void onProviderEnavled(String probider){ } public void onStatusChanged(String provider,int status,Bundle extras){} public void onLocationChanged(Location location) { // TODO Auto-generated method stub } public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } }; private void updateWithNewLocation(Location location) { // TODO Auto-generated method stub String latLongString; TextView myLocationText; myLocationText = (TextView)findViewById(R.id.myLocationText); if (location != null){ double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString = "纬度:" + lat +"\n经度" + lng; // ctrlMap.animateTo(new GeoPoint((int)(lat*1E6),(int)(lng*1E6))); }else { latLongString = "无法获取地理信息"; } myLocationText.setText("您当前的位置是:\n" + latLongString); }}
页面:
<com.google.android.maps.MapView android:clickable="true" android:id="@+id/myMapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="06u0_ZgwSFsxDdaR8ITGA_CwRA8_FhsoYNUmTAg" />