当前位置: 代码迷 >> Android >> android map
  详细解决方案

android map

热度:108   发布时间:2016-05-01 13:48:39.0
android 地图
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"                 />
  相关解决方案