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一位朋友的代码)
页面:
在做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"
/>